2011-10-11 3 views
1

인덱스없이 VBO를 사용하여 큐브를 그립니다. 나는 인터넷 (튜토리얼, 예)에서 아무것도 찾을 수 없다. 내가 뭘하려 :인덱스없이 큐브를 그리는 방법 OpenGL ES 2.0

const GLfloat Vertices[] = { 
    -1.0f, -1.0f, 1.0f, //Vertex 0 
    1.0f, -1.0f, 1.0f, //v1 
    -1.0f, 1.0f, 1.0f, //v2 
    1.0f, 1.0f, 1.0f, //v3 

    1.0f, -1.0f, 1.0f, //... 
    1.0f, -1.0f, -1.0f,   
    1.0f, 1.0f, 1.0f, 
    1.0f, 1.0f, -1.0f, 

    1.0f, -1.0f, -1.0f, 
    -1.0f, -1.0f, -1.0f,    
    1.0f, 1.0f, -1.0f, 
    -1.0f, 1.0f, -1.0f, 

    -1.0f, -1.0f, -1.0f, 
    -1.0f, -1.0f, 1.0f,   
    -1.0f, 1.0f, -1.0f, 
    -1.0f, 1.0f, 1.0f, 

    -1.0f, -1.0f, -1.0f, 
    1.0f, -1.0f, -1.0f,   
    -1.0f, -1.0f, 1.0f, 
    1.0f, -1.0f, 1.0f, 

    -1.0f, 1.0f, 1.0f, 
    1.0f, 1.0f, 1.0f,   
    -1.0f, 1.0f, -1.0f, 
    1.0f, 1.0f, -1.0f, 
}; 


glBufferData(GL_ARRAY_BUFFER, sizeof(Vertices), Vertices, GL_STATIC_DRAW); 
glDrawArrays(GL_TRIANGLE_STRIP, 0, 24); 

을하지만 이상한 무언가를 밝혀,하지만 당신의 glDrawPrimatives에서 큐브

답변

3

먼저 확인 당신이 당신의 그리기 모드로 GL_QUADS를 사용하고 있는지, 호출합니다. 다른 것은 이상한 결과를 줄 것입니다.

정점은 괜찮습니다. 그들은 올바른 순서와 올바른 위치에 있습니다.

편집 : 당신은 쿼드를 사용할 수 없기 때문에, 개별적으로 각각의 삼각형을 정의해야합니다, 첫 번째 블록은 다음과 같이 표시됩니다

-1.0f, -1.0f, 1.0f, //v0 
1.0f, -1.0f, 1.0f, //v1 
-1.0f, 1.0f, 1.0f, //v2 

-1.0f, 1.0f, 1.0f, //v2 
1.0f, -1.0f, 1.0f, //v1 
1.0f, 1.0f, 1.0f, //v3 

당신이를 계속하는 경우 내가보기 엔,하지만 인덱스를 사용하는 것이 좋습니다 것입니다 당신이 정의와 동일한 정점 버퍼는,이처럼 인덱스를 설정할 수 있습니다 : 나는 GL_QUADS를 사용할 수 없습니다

byte indices[6 * 6]; 
int n = 0; 
for(int i = 0; i < 4 * 6; i += 4) 
{ 
    indices[n++] = i; 
    indices[n++] = i + 1; 
    indices[n++] = i + 2; 

    indices[n++] = i + 2; 
    indices[n++] = i + 1; 
    indices[n++] = i + 3; 
} 
+0

, OpenGL을 ES의 GL_QUADS에, GL_QUAD_STRIP & GL_POLYGON 사용할 수 없기 때문에. – SevenDays

+0

편집 됨 ......... – Hannesh

+1

인덱스없이 큐브를 렌더링 할 수있는 방법이 있습니까? 색인이 필요한 이유를 이해할 수 없습니다. – SevenDays