iPhone OpenGL ES 2.0 – 像素完美纹理

如何让我的纹理与OpenGL ES 2.0中像素完美图形的屏幕像素对齐? 这对我正在使用像素艺术图形的项目至关重要。 对此的任何帮助都会很棒!

在这里查看我的答案: 像素空间中的OpenGL纹理坐标


这已被问过几次,但我手边没有链接,所以快速而粗略的解释。 假设纹理宽度为8像素:

  | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ^ ^ ^ ^ ^ ^ ^ ^ ^ 0.0 | | | | | | | 1.0 | | | | | | | | | 0/8 1/8 2/8 3/8 4/8 5/8 6/8 7/8 8/8 

数字表示纹理的像素,条纹表示纹理的边缘,并且在最近的情况下过滤像素之间的边界。 但是你想要点击像素的中心。 所以你对纹理坐标感兴趣

(0/8 + 1/8)/ 2 = 1 /(2 * 8)

(1/8 + 2/8)/ 2 = 3 /(2 * 8)

(7/8 + 8/8)/ 2 = 15 /(2 * 8)

或者更一般地,对于N宽纹理中的像素i,适当的纹理坐标是

(2i + 1)/(2N)

但是,如果要将纹理与屏幕像素完美对齐,请记住,您指定为坐标的不是四边形像素,而是边缘,根据投影可能与屏幕像素边缘对齐,而不是中心,因此可能需要其他纹理坐标。

此链接可能有用:

http://glprogramming.com/red/appendixg.html#name1

看看“如果需要精确的二维光栅化……”。 这个OpenGl技巧告诉您如何最好地设置2D的正交矩阵。

此外,您可能需要禁用任何类型的纹理过滤。

Interesting Posts