在webgl中更改大纹理中20到200个单独像素的最佳方法?

时间:2016-08-11 03:10:49

标签: javascript textures webgl framebuffer

因此,我试图找出我可以使用webgl在纹理中更改200个单独像素(每个像素具有独特颜色和位置)的最快方法。

是否可以将坐标和颜色值传递给着色器,以便它可以一次完成?或者是否存在一些阻止能够做到这一点的限制?

1 个答案:

答案 0 :(得分:0)

WaclawJasper建议使用.texSubImage2D, 这就是我如何使用它。

var dataTypedArray = new Uint8Array(4); // Don't need to do this if the data is already in a typed array
    dataTypedArray[0] = 0;
    dataTypedArray[1] = 0;
    dataTypedArray[2] = 255;
    dataTypedArray[3] = 255;

    gl.bindTexture(gl.TEXTURE_2D, texture);
    gl.texSubImage2D(gl.TEXTURE_2D, 0, posX, posY, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, dataTypedArray);