如何使用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); 

请注意,这些代码片段假定您已设置工作视图/投影。

+0

我们可以在不使用纹理的情况下渲染图像吗? – onmyway133 2013-06-04 03:09:31

曾经是SDK中紧急迫降样品也是一个良好的开端(显然音频代码被打破,这就是为什么它被删除,但OpenGL的代码还是不错的)

你可以找到示例here的链接。