我是OpenGL ES的新手。我之前用Objective-c开发了可可游戏。现在我想用OpenGL ES为iPhone开发3D游戏。我在初学阶段。我可以通过OpenGL ES创建三角形,正方形,立方体,金字塔。但是,如果我们有任何.png图像,我们必须在游戏中渲染它,那么我们必须做什么?为此,我们需要任何其他工具,如团结或什么?我完全不能理解它。或者我们必须像在apple.developer.com网站上给出的GLSprite示例那样做。在那个例子中,他们使用一个teapot.h文件绘制一个茶壶。 teapot.h文件包含一些点,并通过使用这些点,他们绘制三角形,形成一个茶壶。这是绘制任何图像的方法。我想我的思路方向错误,所以请指导我。
提前谢谢
答案 0 :(得分:4)
要绘制图像,您需要先定义可应用图像的几何体:
float w = width / 2;
float h = height / 2;
float x = 10.0f;
float y = 10.0f;
float z = 0.0f;
float scaleX = 1.0f;
float scaleY = 1.0f;
float scaleZ = 1.0f;
const GLfloat squareVertices[] = {
-w, -h,
w, -h,
-w, h,
w, h,
};
const GLfloat textureCoords[] = {
0, 0,
1, 0,
0, 1,
1, 1,
};
然后,您可以应用纹理并渲染此几何体:
glEnable(GL_TEXTURE_2D);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
// apply texture -- how to create and bind a physical image is a whole different question
glBindTexture(GL_TEXTURE_2D, yourTextureID);
glVertexPointer(2, GL_FLOAT, 0, squareVertices);
glTexCoordPointer(2, GL_FLOAT, 0, textureCoords);
glPushMatrix();
glTranslatef(x, y, z);
glScalef(scaleX, scaleY, scaleZ);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glPopMatrix();
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
请注意,这些代码段假设您已设置了工作视图/投影。
答案 1 :(得分:0)
以前在SDK中的Crash Landing示例也是一个很好的起点(显然音频代码已被破坏,这就是它被删除的原因,但OpenGL代码仍然很好)
您可以找到示例here的链接。