2012-04-16 5 views
3

OpenGL의 일부 코드를 ES 버전으로 이식하고 있습니다. glDrawArrays()를 사용하여 glVertexPointer()과 함께 삼각형을 그립니다. 그러나 화면에는 그려지지 않습니다. 전체 코드는 다음과 같습니다.OpenGL ES - glDrawArrays() 사용

void init(void) 
{ 
    glClearColor (0.0, 0.0, 0.0, 0.0); 
    glShadeModel (GL_FLAT); 
} 

void display(void) 
{ 
    glEnableClientState (GL_COLOR_ARRAY); 
    glClear (GL_COLOR_BUFFER_BIT); 
    glColor4f (0.0, 0.0, 1.0, 1.0); 
    glLoadIdentity();   


    glTranslatef(0, 0, -20); 


    const GLfloat triVertices[] = { 
     0.0f, 1.0f, 0.0f, 
     -1.0f, -1.0f, 0.0f, 
     1.0f, -1.0f, 0.0f 
    }; 

    glVertexPointer(3, GL_FLOAT, 0, triVertices); 
    glDrawArrays(GL_TRIANGLES, 0, 3); 
    glDisableClientState(GL_VERTEX_ARRAY); 
    glFlush(); 
} 

void reshape (int w, int h) 
{ 
    glViewport (0, 0, (GLsizei) w, (GLsizei) h); 
    glMatrixMode (GL_PROJECTION); 
    glLoadIdentity(); 
    glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0); 
    glMatrixMode (GL_MODELVIEW); 
} 

int main(int argc, char** argv) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); 
    glutInitWindowSize (400, 400); 
    glutInitWindowPosition (100, 100); 
    glutCreateWindow (argv[0]); 
    init(); 
    glutDisplayFunc(display); 
    glutReshapeFunc(reshape); 
    glutMainLoop(); 
    return 0; 
} 

GLUT가 창을 열면 검정색으로 지워지지만 아무 것도 그려지지 않습니다. 누군가 내가 잘못하고있는 것을 발견 할 수 있습니까? 감사.

답변

9

나는 glEnableClientState(GL_VERTEX_ARRAY);을 찾을 수 없습니다. 또한 glEnableClientState (GL_COLOR_ARRAY);을 볼 수 있지만 glColorPointer()을 호출하지 않습니다. 당신이 다른 것을 의미 할 때 당신이 썼을까요?