gl_FragCoord - ES 着色语言中的定义不足?



在我看来,gl_FragCoord在 ES 着色语言规范中没有充分定义:这里

在我看来,缺少的是像素中心应该位于何处的规范:在整数坐标处或它们之间。相比之下,gl_FragCoord的常规着色语言规范已经确定了这一点:这里

更糟糕的是,我在不同的平台上得到了不同的结果:ARM Mali T604似乎遵循.5约定,而Adreno 330似乎将像素中心置于全整数(两者都在Android 4.4.2上测试过)。

有人可以启发我这里的最佳实践吗?

浏览实际的规范文档,我发现:

1.1.4 Changes from OpenGL GLSL 3.3:
Removed:
* Layout qualifiers: index, origin_upper_left and pixel_center_integer

我不知道这些限定符在 OpenGL ES 中被省略了,我找不到明确的提及哪个约定是正确的(或者是否留给实现来决定),尽管我认为传统方式是半整数坐标。无论如何,看起来您必须添加一些代码来例如向下舍入值以获得一致的行为。

顺便说一下,手册页是不可信的 - 它们往往会省略很多东西并包含错误。规范始终是权威。

相关内容

  • 没有找到相关文章

最新更新