好的,这个问题已经过时了。
我在学习了一些OpenGL ES和测试后发现的是我的iPhone 4实际上是使用了双倍的分辨率图像。如果我没记错的话,我必须将OpenGL上下文比例点设置为2。
然后图像显得清晰。
希望这有助于其他人遇到同样的问题。
我试图避免自己发布一个问题,并继续在互联网上搜索任何进一步的线索,为什么我的纹素到像素映射没有用,但OpenGL被证明是一个怪物的东西要正确
iPhone 4
OpenGL ES 1.1
纵向模式下的屏幕宽度= 320像素(屏幕边界宽度)
纵向模式下的屏幕高度= 480像素(UIScreen绑定高度)
纹理图像宽度= 480像素(图像文件像素)
纹理图像高度= 320像素(图像文件像素)
Xcode项目:http://www.chewedon.com/OGL.zip
使用的纹理图像:http://img.photobucket.com/albums/v639/Ryu_Kaiser/serah.png
我一直在研究将纹素映射到像素的问题,以便绘制的最终纹理像Photoshop中一样清晰锐利,即像素和纹理纹理像素之间的像素完美映射。
据我所知,问题在于纹素中心并非位于像素中心的顶部。我也理解修复它的解决方案是将纹素移动半个纹素(或像素?),以便纹素直接位于顶部。
我已尝试设置我的纹理坐标数组,如下所示:
const GLfloat texCoords[] =
{
0.0 + (0.5 / 480.0), 1.0 + (0.5 / 320.0),
1.0 + (0.5 / 480.0), 1.0 + (0.5 / 320.0),
0.0 + (0.5 / 480.0), 0.0 + (0.5 / 320.0),
1.0 + (0.5 / 480.0), 0.0 + (0.5 / 320.0)
};
(同样,我也尝试过设置顶点坐标。根据我读过的一些例子,他们说你可以改变纹理坐标或顶点坐标)
如果我使用纹理坐标0.0到1.0运行我的应用程序,纹理在iPhone模拟器中看起来很完美,但如果我在iPhone上运行应用程序,纹理会有轻微模糊。
我做错了什么?
我是否需要将纹理坐标乘以屏幕宽度与高度宽高比系数?
我已经上传了我用来绘制OpenGL场景和我使用的纹理图像(上面链接)的Xcode项目。
干杯。
答案 0 :(得分:0)
除了马库斯所说的你应该从1.0减去半个纹素,而不是添加。并对顶点位置执行相同操作(向下限添加一半,从上限减去一半)。您还应该确保纹理的宽度和高度用于纹素偏移,屏幕的宽度和高度用于位置偏移,而不是两者都有(当然,除非它们相等)。这应该给你相当像素完美的纹理映射。
答案 1 :(得分:0)
公然是纹理重采样问题。你的iphone可能正在将纹理重新采样到一个新的尺寸,n ^ 2。例如512x512。只使用尺寸为2的纹理,因为大多数图形硬件都需要这样做。