Sud*_*pta 18 opengl-es opengl-es-2.0
我有以下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();
}
}
Run Code Online (Sandbox Code Playgroud)
OpenGL ES 2.0缺少GL_POLYGON,glNormal3fv,glVertex3fv,glEnd,glBegin等,那么如何更换这些函数呢?
PS:我在Ubuntu 10.10中通过模拟器进行此操作.
dat*_*olf 10
您使用顶点缓冲对象.NeHe教程:http://nehe.gamedev.net/data/lessons/lesson.asp?freeon = 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完美取代.或者你做了干净的事情,并自己将多边形几何体镶嵌成三角形.
一个基本的例子,在OpenGL ES中绘制一个三角形:
GLfloat glverts[9];
glVertexPointer(3, GL_FLOAT, 0, glverts);
glEnableClientState(GL_VERTEX_ARRAY);
//fill in vertex positions with your data
for (int i = 0; i < 3; i++) {
glverts[i*3] = ...;
glverts[i*3+1] = ...;
glverts[i*3+2] = ...;
}
glDrawArrays(GL_TRIANGLE_FAN, 0, 3);
Run Code Online (Sandbox Code Playgroud)
编辑:对不起,这是针对OpenGL ES 1.1,而不是2.0
| 归档时间: |
|
| 查看次数: |
15541 次 |
| 最近记录: |