gpt4 book ai didi

opengl-es - OpenGL ES - 使用 glDrawArrays()

转载 作者:行者123 更新时间:2023-12-02 09:12:09 25 4
gpt4 key购买 nike

我正在将一些代码从 OpenGL 移植到 ES 版本。我使用 glDrawArrays() 与 glVertexPointer() 结合绘制一个三角形。但是,它不会在屏幕上绘制。完整代码为:

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 打开窗口,它会清除为黑色,但不会绘制任何内容。有人可以发现我做错了什么吗?谢谢。

最佳答案

我没有看到对 glEnableClientState(GL_VERTEX_ARRAY); 的调用。我还看到 glEnableClientState (GL_COLOR_ARRAY); 但没有调用 glColorPointer()。也许您写的是一个,而您的意思是另一个?

关于opengl-es - OpenGL ES - 使用 glDrawArrays(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10168599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com