2
我有这种形式的一系列标准的OpenGL指令:的OpenGL ES(在iOS上):
glBegin(GL_TRIANGLES);
// ...
glNormal3fv(a); glVertex3f(a[0]*r, a[1]*r, a[2]*r);
// ...
glEnd();
我想在iOS上运行它们,因此必须将其转换为OpenGL ES的。由于OpenGL ES不支持glBegin()或glEnd(),我将glVertex3f调用封装到GLfloat顶点数组,然后调用glDrawArrays()调用。
GLfloat vertices[] = {1,0,0, 0,1,0, ...};
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, vertices);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableClientState(GL_VERTEX_ARRAY);
但是我不能确定如何将其纳入正常的向量的规格(原glNormal3fv()调用),在此ES版。
有人会举足轻重来举例说明解决方案吗?
非常感谢您的快速回复,谢谢德鲁。所以实际上这里需要的是glDrawArrays()调用之前的另一行:glNormalPointer(GL_FLOAT,0,vertices); – KomodoDave 2011-04-27 00:28:32
@KomodoDave:应该这样做! – 2011-04-27 00:30:10
我在这里做了一个小小的滑动 - 事实上我需要一个单独的'法线'阵列,因为法线是'a'与顶点a * r(参见原始代码)。无论如何,现在所有排序我认为,即将测试..谢谢:) – KomodoDave 2011-04-27 15:31:00