我试图改变我的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的数据?
- 有可能以某种方式直接覆盖颜色缓冲区吗?
答案 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。
- 有可能以某种方式直接覆盖颜色缓冲区吗?
没有