OpenGL ES渲染到非POT纹理

时间:2013-06-05 23:46:17

标签: ios opengl-es

我正在尝试使用iOS和GL ES1对纹理进行全屏渲染。我已经使用带有附加纹理的FBO实现了这一点并且它工作正常。

但我不确定我的方法是否正确: iPhone屏幕不是2的幂,所以我做的是将glViewport设置为最接近的POT值以匹配纹理大小,然后将其映射到具有相同屏幕大小的四边形。这有效,但图像看起来有点模糊。

是否可以仅绘制附加到FBO的纹理的一部分,然后相应地映射四维UV坐标?

另一种方法是使用非彩色纹理,但我想避免使用它。

1 个答案:

答案 0 :(得分:2)

我会说你的方法很好,除了一件事。您编写了“最接近的POT值以匹配纹理大小”,不要使用最近的,使用最接近的更大。如果你缩小它,结果应该有点模糊。

因此创建一个大于屏幕本身的POT纹理,将其附加到帧缓冲区,使用与屏幕具有相同参数的视图端口,然后如果需要使用该纹理重新显示使用纹理坐标,例如screen.width/texture.width而不是1.0。这应该给你一个很好的1:1采样,结果应该尽可能清楚。