如何使用OpenGL ES渲染图像?
问题描述:
我是OpenGL ES中的新手。我早些时候用objective-c开发了可可游戏。现在我想用OpenGL ES为iPhone开发3D游戏。我在初学阶段。我可以通过OpenGL ES创建三角形,正方形,立方体,金字塔。但是,如果我们有我们的任何.png图像,我们必须在我们的游戏中渲染它,那么我们必须做什么?为此,我们需要其他工具如统一或什么?我无法准确理解它。或者我们必须像在apple.developer.com站点中给出的GLSprite示例那样来完成它。在那个例子中,他们通过使用一个teapot.h文件来绘制一个茶壶。 teapot.h文件包含一些点,并通过使用这些点,他们绘制了三角形,形成了一个茶壶。那么这是一种绘制任何图像的方式。我想我在错误的方向思考,所以请指导我。如何使用OpenGL ES渲染图像?
预先感谢您
答
吸引你需要首先定义的图像可以被应用到几何图像:
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);
请注意,这些代码片段假定您已设置工作视图/投影。
我们可以在不使用纹理的情况下渲染图像吗? – onmyway133 2013-06-04 03:09:31