Я создал DataTexture в ThreeJS, который, в свою очередь, вызовет texImage2D.Сколько данных требуется texImage2D в WebGL?
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);
Как вы можете видеть, я использовал размер 50х50 текселей и трех 8BIT каналов (THREE.RGB в threejs). Когда я использовал UInt8Array размера 7500 (50 * 50 * 3), Firefox говорит мне, что он нуждается в большем количестве данных:
Error: WebGL: texImage2D: not enough data for operation (need 7598, have 7500)
Я хотел бы знать: где это дополнительные 98 байт взялись? Я бы предположил, что выравнивание, но 7598 даже не делится на 4, а 7500. (Теперь, когда я думаю об этом, он не делится на 3, мое число каналов)
7600 имеет смысл, поскольку это будет означать 2 байта заполнения в строке, последняя строка не заполнена?
(я понимаю, что нужно использовать только кратные четырех размерностей, все-таки я хотел бы знать ответ)