2012-01-20 1 views
1

I이 바이트 배열 방법을 사용하여 정점 버퍼를 채우는 경우Context3DVertexBufferFormat.BYTES_4를 사용할 때 한 필드의 값 범위는 무엇입니까?

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

값의 범위를 정의 : 다음

//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 속성 필드 (이 경우 va0.x, va0.y, va0.z, va0.w)에 대해 가능한 (0에서 255? 0.0에서 1.0? ByteArray 오브젝트 (writeFloatwriteUnsignedInt)에 어떤 데이터 유형이 기록되는지간에 차이가 있습니까?

답변

1

BYTES_4는 [0..1] 범위에서 4 바이트로 압축 해제됩니다. 바이트 0xff, 0x7f, 0, 1은 버텍스 프로그램에서 1.0, 0.5, 0, 1/255가됩니다. WriteUnsignedInt는 x를 1로 채 웁니다. 대신에 WriteByte를 4 번 사용하거나 4 가지 값을 색상처럼 하나의 부호없는 int에 더 잘 포장해야합니다.

관련 문제