我有类似以下的OpenGL代码,我想移植到OpenGL ES 2.0:

for (surfnum=0;surfnum < surftotal;surfnum++){
    for (i=0;i<triNum[surfnum];i++){
        glBegin(GL_POLYGON);
        glNormal3fv(triArray[surfnum][i].normpt1);
        glVertex3fv(triArray[surfnum][i].pt1);
        glNormal3fv(triArray[surfnum][i].normpt2);
        glVertex3fv(triArray[surfnum][i].pt2);
        glNormal3fv(triArray[surfnum][i].normpt3);
        glVertex3fv(triArray[surfnum][i].pt3);
        glEnd();
        glFlush();
    }
}


OpenGL ES 2.0缺少GL_POLYGON,glNormal3fv,glVertex3fv,glEnd,glBegin等,那么如何替换这些功能?

附注:我是在Ubuntu 10.10中通过模拟器执行此操作的。

最佳答案

您使用顶点缓冲区对象。 NeHe上的教程:http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=45

本教程(大量文本)是为Windows编写的。 Android上的OpenGL-ES 2的不同之处在于您不必手动加载扩展,并且egl...函数为它们提供了适当准备的OpenGL上下文。

另一个可读的教程是
http://www.songho.ca/opengl/gl_vbo.html

GL_POLYGONS已被OpenGL-3和-ES弃用,因为它们使用起来很麻烦并且几乎从未使用过。 GL_POLYGON也可以完美替换为GL_TRIANGLE_FAN。或者您做干净的事情,然后自己将多边形几何体镶嵌为三角形。

09-04 09:24