2014-03-01 9 views
1

인덱스를 사용하여 모든 정점을 함께 뭉치지 않고 VBO를 최적화하려고했지만 GL_INDEX_ARRAY를 사용할 수 없습니다. 그것은 단지 '선언되지 않은 식별자 GL_INDEX_ARRAY 사용'을 말하고 gl.h (내가 보았습니다)에 정의되어 있지 않습니다. 내 VBO의 색인을 생성해야하는 또 다른 방법이 있습니까? 내가 거기에 몇 가지 GLKVertexAttribIndex했지만 거기 때부터 내가이 glEnableClientState (GL_INDEX_ARRAY)를 사용했는데 짐작 생각 처음OpenGL-es에서 인덱싱 iOS

glGenVertexArraysOES(1, &vertexArray); 
glBindVertexArrayOES(vertexArray); 

glGenBuffers(1, &vertexBuffer); 
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer); 
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*vertexDataSize, vertexData, GL_STATIC_DRAW); 

glEnableVertexAttribArray(GLKVertexAttribPosition); 
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, 40, BUFFER_OFFSET(0)); 
glEnableVertexAttribArray(GLKVertexAttribNormal); 
glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, 40, BUFFER_OFFSET(12)); 
glEnableVertexAttribArray(GLKVertexAttribColor); 
glVertexAttribPointer(GLKVertexAttribColor, 4, GL_FLOAT, GL_FALSE, 40, BUFFER_OFFSET(24)); 

; 나는 나의 VBOs을 만들려면이 코드를 사용 그러나 그것은 분명히 존재하지 않습니다. 그렇다면 VBO에서 인덱스 배열을 사용하려면 어떻게해야합니까?

답변

1

인덱스 버퍼를 나타내는 데 GL_ELEMENT_ARRAY_BUFFER를 사용하십시오. 지수는 일반적으로 짧은 정의, 그래서 무언가 같이됩니다

glGenBuffers(1, &indexBuffer); 
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuffer); 
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLshort)*indexDataSize, indexData, GL_STATIC_DRAW); 
+0

감사합니다, 나는 그것을 사용하여 그리는 방법을 알아 내려고했다, 그것은 정점 데이터가 어디에서 왔는지 후 여전히 궁금 종류의 혼란을했지만 지금은 그것을 가지고 . 건배! – user614273

관련 문제