gpt4 book ai didi

opengl-es - 使用纹理坐标的 OpenGL ES 1.1 Texel 到像素映射不起作用,我做错了什么?

转载 作者:行者123 更新时间:2023-12-02 23:03:39 27 4
gpt4 key购买 nike

编辑

好吧,这个问题已经很老了。

在学习了一些 OpenGL ES 并进行测试后,我发现我的 iPhone 4 实际上使用了双倍分辨率的图像。如果我没记错的话,我必须将 OpenGL 上下文比例点设置为 2。

然后图像显得清晰。

希望这可以帮助其他遇到同样问题的人。

原始问题

我试图克制自己不要真正提出问题,并继续在互联网上搜索任何进一步的线索来解释为什么我的纹素到像素映射不起作用,但 OpenGL 被证明是一个需要正确处理的怪物。 .

OpenGL开发环境:

iPhone 4
OpenGL ES 1.1
纵向模式下的屏幕宽度 = 320 像素(UIScreen 边界宽度)
纵向模式下的屏幕高度 = 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 项目和我使用的纹理图像(上面链接)。

干杯。

最佳答案

除了 Marcus 所说的之外,您应该从 1.0 中减去半个纹素,而不是相加。对顶点位置执行相同的操作(将下限添加一半,从上限减去一半)。您还应该确保使用纹理的宽度和高度作为纹素偏移,使用屏幕的宽度和高度作为位置偏移,而不是两者同时使用(当然,除非它们相等)。这应该会给你相当像素完美的纹理映射。

关于opengl-es - 使用纹理坐标的 OpenGL ES 1.1 Texel 到像素映射不起作用,我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6812211/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com