2013-07-12 4 views
1

glDrawElements를 사용하여 다각형을 그립하고 싶습니다. glDrawArrays를 사용하면 모든 것이 잘되지만 glDrawElements는 그려지지 않습니다.lwjgl glDrawElements가 그려지지 않음

float[] polys = { 
    0f,0f,0f, 
    0f,0f,-1f, 
    -1f,0f,-1f, 
    -1f,0f,0f 
}; 

int[] indexs = { 
     0,1,2, 
     3,4,5, 
     6,7,8, 
     9,10,11 
    }; 

float[] texs = { 
     0f,0f, 
     0f,1f, 
     1f,1f, 
     1f,0f 
    }; 


FloatBuffer buff_polys = new FloatBuffer(polys.length).put(polys).normalize(); 
IntegerBuffer buff_indexs = new IntegerBuffer(indexs.length).put(indexs).normalize(); 
FloatBuffer buff_texs = new FloatBuffer(texs.length).put(texs).normalize(); 

GL11.glVertexPointer(3, 0, buff_polys.getBuffer()); 
GL11.glTexCoordPointer(2, 0, buff_texs.getBuffer()); 

//GL11.glDrawArrays(GL11.GL_QUADS, 0, buff_polys.size()/3); 
GL11.glDrawElements(GL11.GL_QUADS, buff_indexs.getBuffer()); 

도움말 :

여기 내 코드입니다! 무엇이 문제가 될 수 있습니까?

답변

0

색인은 정점 구성 요소 (x, y 또는 z)가 아니라 정점 (x, y, AND z)을 참조합니다.

float[] polys = { 
    0f,0f,0f, // Vertex 0 
    0f,0f,-1f, // Vertex 1 
    -1f,0f,-1f, // Vertex 2 
    -1f,0f,0f // Vertex 3 
}; 

하면이처럼 인덱스를 정의하십시오 :

int[] indexs = { 0, 1, 2, 3 }; 
0

당신이 당신의 폴리곤에 네 개의 정점을 배열 떠 있도록 정점은 세 가지 값이 0, 1, 2, 3. 인덱스 배열 이 중 하나를 참조해야합니다. 존재하지 않는 색인 (4 이상)을 입력하면 거의 확실하게 문제가 발생할 것입니다 (사용중인 OpenGL의 구현에 따라 다름).

관련 문제