打开G1 ES纹理渲染

时间:2013-01-15 10:37:02

标签: ios opengl-es

我正在学习Open GL ES以构建iOS应用程序。我试图在我的模型中添加纹理但没有成功。我从

下载了一个示例项目

link

并一直在检查它。我的问题是:当我运行项目时,我得到以下内容:

image with working texture

你可以看到它带有纹理的基本立方体。我决定将.png文件更改为其他图像。但是当我这样做时,我遇到了:

image not rendering texture

我不知道为什么我的.png文件没有渲染到多维数据集?

继承我的纹理: my texture

和原作: original

只是为了确认我没有错误,我没有对代码进行任何更改。

3 个答案:

答案 0 :(得分:3)

如果您使用的是非二次幂纹理,则无法使用mipmap,您需要设置过滤正确。

过滤

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

夹具:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

但这有一个缺点,在3D物体上,如果距离远,纹理质量会很差。因此,在这种情况下保持两个纹理的强度并使用mipmap。

答案 1 :(得分:1)

对于这个特定的教程,您可以使用方形,二维幂的纹理来解决您的问题。您发布的是135x134,因此您需要将其转换为128X128256x256

有关相关讨论,请参阅此帖子:iphone opengl es 2.0 non power of two

答案 2 :(得分:0)

您是如何更改图像文件的?您是否只更换了文件夹中的文件或将其包含在项目中?为了以防万一,你应该通过拖入XCode并将其重命名为tile_floor.png,或者将initWithFrame方法中的(纹理)图像文件名更改为它的所有内容来将项目包含在项目中。你的纹理文件。

如果这不起作用,那么两个图像文件中的颜色格式或每像素位信息可能不同。

相关问题