2012-01-18 1 views
0

(그 각각이 자신의 버텍스 쉐이더과 자신의 렌더링 작업에 대한 책임 조각 - 쉐이더이다), 나는 그들이 단지 데이터를 저장할 수 있도록 새로운 VertexBuffer3DIndexBuffer3D를 인스턴스화해야합니까 해당하는 Program3D에 사용 된 꼭짓점 데이터 형식과 관련이 있습니까? 예를 들어사용 된 각 Program3D에 대해 새로운 VertexBuffer3D & IndexBuffer3D를 작성해야합니까? 내가 몇 <code>Program3D</code> 객체가있는 경우

, 나는 같은 다른 정점 데이터 형식의 쿼드 정의 할 계획 경우 :

var vertexData:Vector.<Number>; 

//Vertex-Format A: 
vertexData = new <Number>[ 
    //X, Y, U, V 
    -.5, -.5, 0, 0, 
    .5, -.5, 1, 0, 
    .5, .5, 1, 1, 
    -.5, .5, 0, 1 
]; 

//Vertex-Format B: 
vertexData = new <Number>[ 
    //X, Y, U, V, Matrix-Constant ID, Color 
    -.5, -.5, 0, 0, 3, 0xff0000, 
    .5, -.5, 1, 0 , 3, 0x00ff00, 
    .5, .5, 1, 1, 3, 0x0000ff, 
    -.5, .5, 0, 1, 3, 0xffff00 
]; 

//Vertex-Format C: 
vertexData = new <Number>[ 
    //X, Y, Matrix-Constant ID 
    -.5, -.5, 3, 
    .5, -.5, 3, 
    .5, .5, 3, 
    -.5, .5, 3 
]; 

, 내가 형식를 저장 한 VertexBuffer3DIndexBuffer3D을 만들어야 다른 형식 B 및 또 다른 하나는 형식 C? 또는 다양한 형식을 동일한 VertexBuffer3D 안에 섞어서 하나의 IndexBuffer3D을 사용하여 삼각형을 그리는 데 영리한 (혼란 스럽습니다!) 사용을 할 수 있습니까?

답변

2

자유롭게 혼합하여 일치시킬 수 있습니다. 모든 입력을 필요로하는 버텍스 프로그램을 생각해보십시오. 그것이 어디에서 오는가 setVertexBufferAt로 끝난다. 그것은 다른 버퍼에서 올 수 있습니다, 그것은 심지어 같은 위치에서 올 수 있습니다. 일부 전선을 연결하는 것과 같습니다. 인덱스 버퍼는 정점 버퍼에서 점프합니다. 가능한 한 많이 재사용 할 수 있고 사용해야합니다.

관련 문제