我正在處理一個嘗試對數據數組進行壓縮的項目。到目前爲止,我一直在使用Canvas元素和putImageData/getImageData來完成我的計算。我知道一般Canvas和webGl用於圖像處理,但在這種情況下,我將像素值轉換爲我需要的數字,並且工作正常。webgl在處理像素時是否可以使用邏輯
我想使用webGl來執行壓縮/解壓縮,因爲它的速度提高了。然而,根據我的理解,webGl在某種程度上受限於它可以計算的數學類型。
所以我的問題是,是否有可能將下面的「邏輯」移植到webgl中,還是使用普通的javascript運行計算?
這是我試圖複製的邏輯。比方說,你有數據的排列,它看起來像這樣:
1,2,3,4,5,10,11,12,13,16,17,18,19
在此模式數組就是它加1,但偶爾它會跳過幾個數字然後重新開始。我利用這種模式的方式是將這個單個數組轉換爲2個數組。
第一個數組跟蹤「where」數字「跳躍」。第二個數組跟蹤每次跳轉後的第一個數字,所以我知道從哪裏開始再次計數。
所以經壓縮的數據看起來像這樣: 第一個陣列(存儲跳躍的位置):1,6,10 第二陣列(存儲在每一跳的值):1,10,16
我使用canvas imgData處理「重建」原始數組的方式是使用for循環。該方案是這樣的:
//Setup some variables
var jumpDistance = 0;
var y = 0;
for(x = 0; x < 13; x ++){ //13 is the length of the original array
jumpDistance = firstArray[y];
originalArray[x] = originalArray[x] + secondArray [y];
for(var jd = 1; jd < jumpDistance + 1; jd ++){
originalArray[x + jd] = originalArray[x + jd] + 1;
}
y = y + 1;
x = x + jumpDistance;
}
這裏的主要邏輯我希望在WebGL的複製是我怎麼能以更快的「速度」,然後我通過第一2個陣列是構建它讀取建立最終的陣列。
我知道webGl能夠讀取當前像素周圍的其他像素。但是,無論如何,要根據已經存儲在另一個數組中的數據來讀取某個像素嗎?如果這是可能的,請讓我知道!
非常感謝!
哇!這句話完美!非常感謝您的快速響應! – YAHsaves