2012-04-16 9 views
3

私はOpenGLからESバージョンにいくつかのコードを移植しています。私はglVertexPointer()と一緒に三角形を描くためにglDrawArrays()を使用しています。しかし、それは画面に描画されません。完全なコードは次のとおりです: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()への呼び出しはありません。おそらく、あなたが他人を意味するときにあなたが書きましたか?

関連する問題