[英]How much data does texImage2D in WebGL need?
我在ThreeJS中创建了一个DataTexture,然后调用texImage2D。
var twidth = 50;
var theight = 50;
var tsize = twidth * theight;
var tileData = new Uint8Array( tsize * 3);
//fill it with some data
tileDataTexture = new THREE.DataTexture(this.tileData, twidth, theight, THREE.RGBFormat);
正如你所看到的,我使用了50x50 Texels和3个8Bit通道的大小(三个中的THREE.RGB)。 当我使用大小为7500(50 * 50 * 3)的UInt8Array时,Firefox告诉我,它需要更多数据:
Error: WebGL: texImage2D: not enough data for operation (need 7598, have 7500)
我想知道:这98个字节来自哪里? 我猜测对齐,但7598甚至不能被4整除,而7500则是。 (现在我想起来了,它不能被3整除,我的通道数也是如此)
7600是有意义的,因为这意味着每行2个字节的填充,是最后一行没有填充?
(我觉得那个尺寸应该只使用四个的倍数,我仍然想知道答案)
正如user1421750指出的那样,行被填充
但是,您可以通过设置texture.unpackAlignment
来设置每行填充多少。 它默认为4,但您可以将其设置为8,4,2或1。
就个人而言,我会默认1,因为我觉得你不太可能像你一样感到惊讶
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.