【问题标题】:Porting OpenGL glBegin() to OpenGL ES将 OpenGL glBegin() 移植到 OpenGL ES
【发布时间】:2014-03-10 07:34:01
【问题描述】:

如何将以下从普通 OpenGL 转换为 OpenGL ES 的序列?

    displayList = glGenLists(1);
    glNewList(displayList, GL_COMPILE);

    glBegin(GL_TRIANGLES);
        glNormal3f(n1.x, n1.y, n1.z);
        glVertex3f(v1.x, v1.y, v1.z);
        glNormal3f(n2.x, n2.y, n2.z);
        glVertex3f(v2.x, v2.y, v2.z);
        glNormal3f(n3.x, n3.y, n3.z);
        glVertex3f(v3.x, v3.y, v3.z);
    }
    glEnd();

    glEndList();
    glCallList(displayList);

【问题讨论】:

    标签: android opengl opengl-es


    【解决方案1】:

    您不能直接将其转换为 OpenGL ES。那里没有显示列表,您需要使用顶点数组。这是一种不同的,实际上是提交几何数据的首选方式。我建议您查看有关顶点数组以及 openGL-ES 2 顶点缓冲区对象 (VBO) 的教程。

    【讨论】:

    • 谢谢。我需要弄清楚顶点和顶点法线(以及面)之间的联系,因为我想渲染从 .obj 文件导入的模型。
    • @hooch:没有什么比 OpenGL 即时模式 API 更能迷惑人们关于顶点的性质了。 以下是关于顶点的最重要信息: 顶点是 [位置、法线、颜色、纹理坐标等] 的整个元组。一个常见的误解,由于 OpenGL 即时模式 API 的糟糕设计而扩散,position == vertex,但这完全是错误的。整件事都很重要。当您调用glVertex 时,之前设置的所有其他属性值都会“复制”到顶点中。
    • @hooch:这意味着,如果您只更改一个属性,无论是颜色、法线还是与顶点相关的任何其他属性,您都会得到一个完全不同的顶点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    相关资源
    最近更新 更多