请在此处查看我的答案:像素空间中的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
Run Code Online (Sandbox Code Playgroud)
数字表示纹理的像素,条纹表示纹理的边缘,并且在最近的情况下过滤像素之间的边界.但是你想要点击像素的中心.所以你对纹理坐标感兴趣
(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)
但是,如果您想要将纹理与屏幕像素完美对齐,请记住您指定为坐标的不是四边形像素,而是边缘,根据投影可能与屏幕像素边缘对齐,而不是中心,因此可能需要其他纹理坐标.
归档时间: |
|
查看次数: |
7623 次 |
最近记录: |