3

我正在尝试使用“超级圣经”在 iPhone 上学习 OpenGL,但在从 OpenGL 移植到 OpenGL ES 时遇到了麻烦。我的理解是该glRectf()功能在后者中不可用。什么是替代方法?任何相关的概念信息也将不胜感激。

4

2 回答 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

于 2009-05-05T15:01:49.303 回答
2

而不是做一个矩形,你只做两个三角形。

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

于 2009-05-05T14:52:44.130 回答