[英]How to render image with OpenGL ES?
我是OpenGL ES的新手。 我较早时用Objective-C开发了可可游戏。 现在,我想使用OpenGL ES开发适用于iPhone的3D游戏。 我处于初学者阶段。 我可以通过使用OpenGL ES创建三角形,正方形,立方体,金字塔。 但是,如果我们有任何.png图像,并且必须在游戏中进行渲染,那么我们该怎么办? 为此,我们需要任何其他工具,例如“团结”或什么? 我无法完全理解它。 或者我们必须像apple.developer.com网站中提供的GLSprite示例一样进行操作。 在该示例中,他们使用一个teapot.h文件绘制了一个茶壶。 teapot.h文件包含一些点,并使用这些点绘制形成茶壶的三角形。 所以这是一种绘制任何图像的方法。 我认为我的方向错误,因此请为此指导我。
先感谢您
要绘制图像,您需要首先定义该图像可以应用于的几何形状:
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);
请注意,这些代码段假定您已经设置了工作视图/投影。
SDK中的Crash Landing示例也是一个不错的起点(显然音频代码已损坏,这就是为什么将其删除的原因,但是OpenGL代码仍然不错)
您可以在此处找到示例的链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.