绘制2d Uint8ClampedArray RGBA - 使用WebGL的数据

时间:2015-02-19 10:42:06

标签: javascript webgl

我试图改变我的HTML5 2d平台游戏以使用WebGL渲染。

链接到我的游戏:http://yle.fi/galaxi/mazq/2014/katko_dev/(尚未实施WebGL)

它当前呈现为一个canvas元素,其中包含单个" context.putImageData(imgData,0,0)"呼叫,但它与Firefox的速度很慢,并成为其他浏览器上具有大分辨率的瓶颈。

我已成功使用我的Uint8ClampedArray RGBA作为"全屏"平面,但通过调用...

更新此纹理数据

gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,512,512,0,gl.RGBA,gl.UNSIGNED_BYTE,texture_data);

...至少对于firefox而言,50fps似乎太慢了。

- 有更好的方法来更新纹理吗?

- 是否有其他方法可以显示2d Uint8ClampedArray RGBA - 使用WebGL的数据?

- 有可能以某种方式直接覆盖颜色缓冲区吗?

1 个答案:

答案 0 :(得分:0)

  

- 有更好的方法来更新纹理吗?

不,我知道,除了重写你的引擎使用真正的WebGL调用来绘制而不是直接操纵字节。对不起,我知道那不是你想听到的。

  

- 是否有其他方法可以显示2d Uint8ClampedArray RGBA - 使用WebGL的数据?

你需要它是RGBA吗?例如,如果它是基于8位索引调色板?然后,您只需上传1/4的数据。 See this answer for how to do indexed paletteed graphics in WebGL。注意:不能保证这会更快。虽然您要上传较少的数据,但驱动程序可能会根据GPU将数据扩展为RGBA。

  

- 有可能以某种方式直接覆盖颜色缓冲区吗?

没有