【发布时间】:2014-02-27 15:50:45
【问题描述】:
在我看来,gl_FragCoord 在 ES 着色语言规范中的定义不够充分:here
我认为缺少的是像素中心应该位于何处的规范:在整数坐标或它们之间。相比之下,gl_FragCoord 的常规着色语言规范明确了这一点:here
更糟糕的是,即使我在不同平台上得到混合结果:ARM Mali T604 似乎遵循 .5 约定,而 Adreno 330 似乎将像素中心设置为完整整数(均在 Android 4.4.2 上测试)。
有人能告诉我这里的最佳做法是什么吗?
【问题讨论】:
-
作为折衷方案,您始终可以添加 0.375,0.375 的子像素偏移(到转换前的坐标)。长期以来,这一直是用于使三角形、点和光栅位置(不在 GLES 中)的像素中心一致排列的技巧(因为它们都有不同的光栅化覆盖规则)。如果由于某种原因规则不同,它应该导致将坐标四舍五入到正确的位置。通常约定是多边形的左上角和点的中心。
标签: graphics opengl-es glsl gpu opengl-es-3.0