将OpenGL转换为OpenGL-ES - glRectf()

3
我正在尝试使用"超级圣经"在iPhone上学习OpenGL,但是在从OpenGL到OpenGL ES的移植方面遇到了麻烦。我的理解是后者中没有glRectf()函数。有什么替代方法吗?欢迎提供任何相关的概念信息。
2个回答

9
替代方法是绘制三角形带:
GLfloat texture[] =
{
    0, 0,
    0, 1,
    1, 0,
    1, 1
};

GLfloat model[] =
{
    0, 0, // lower left
    0, h, // upper left
    w, 0, // lower right
    w, h  // upper right
};

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);

glVertexPointer(2, GL_FLOAT, 0, model);
glTexCoordPointer(2, GL_FLOAT, 0, texture);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

这将绘制一个宽度为w,高度为h的纹理矩形。


+1 - 如果我现在不太懒得编写代码,我也会说同样的话 :) - Eric Petroelje

2

不必使用矩形,只需使用两个三角形即可。

然而这并不重要,因为iPhone上的GL-ES不支持立即模式。您需要在数组中定义所有顶点,并使用一个顶点数组渲染函数来绘制它们,而不是使用立即模式函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接