我正在学习Open GL ES以构建iOS应用程序。我试图在我的模型中添加纹理但没有成功。我从
下载了一个示例项目并一直在检查它。我的问题是:当我运行项目时,我得到以下内容:
你可以看到它带有纹理的基本立方体。我决定将.png文件更改为其他图像。但是当我这样做时,我遇到了:
我不知道为什么我的.png文件没有渲染到多维数据集?
继承我的纹理:
和原作:
只是为了确认我没有错误,我没有对代码进行任何更改。
答案 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
,因此您需要将其转换为128X128
或256x256
。
有关相关讨论,请参阅此帖子:iphone opengl es 2.0 non power of two
答案 2 :(得分:0)
您是如何更改图像文件的?您是否只更换了文件夹中的文件或将其包含在项目中?为了以防万一,你应该通过拖入XCode并将其重命名为tile_floor.png
,或者将initWithFrame
方法中的(纹理)图像文件名更改为它的所有内容来将项目包含在项目中。你的纹理文件。
如果这不起作用,那么两个图像文件中的颜色格式或每像素位信息可能不同。