繁体   English   中英

如何使用OpenGL ES渲染图像?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM