При использовании Context3DVertexBufferFormat.BYTES_4, каков диапазон значений одного поля? - PullRequest
1 голос
/ 21 января 2012

Если я заполняю буфер вершин, используя метод байтового массива:

//Example:
var ba:ByteArray = new ByteArray();

//Write vertex #0:
ba.writeFloat(-.5);
ba.writeFloat(-.5);
ba.writeUnsignedInt(0);
ba.writeUnsignedInt(0);

//Write vertex #1:
ba.writeFloat(.5);
ba.writeFloat(-.5);
ba.writeUnsignedInt(1);
ba.writeUnsignedInt(0);

//Write vertex #2:
ba.writeFloat(.5);
ba.writeFloat(.5);
ba.writeUnsignedInt(1);
ba.writeUnsignedInt(1);

//Write vertex #3:
ba.writeFloat(-.5);
ba.writeFloat(.5);
ba.writeUnsignedInt(0);
ba.writeUnsignedInt(1);

myVertexBuffer.uploadFromByteArray(ba, 0, 0, 4);

, а затем устанавливаю атрибут vertex-buffer в следующем формате:

var format:String = Context3DVertexBufferFormat.BYTES_4;
context3D.setVertexBufferAt(0, myVertexBuffer, 0, format);

Чтодопустимый диапазон значений (от 0 до 255? 0,0 до 1,0? и т. д.) для поля атрибута Vertex (в данном случае va0.x, va0.y, va0.z, va0.w )?Различается ли тип данных, записываемый в объект ByteArray ( writeFloat и writeUnsignedInt )?

1 Ответ

1 голос
/ 01 февраля 2012

BYTES_4 распаковывается как 4 байта в диапазоне [0..1].Таким образом, байты 0xff, 0x7f, 0, 1 станут 1,0, 0,5, 0, 1/255 в вершинной программе.В вашем случае WriteUnsignedInt будет заполнять только x значением 1. Вместо этого вы должны использовать WriteByte 4 раза или, что еще лучше, упаковать свои 4 значения в одно целое без знака, как цвет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...