默认情况下,gl_FragCoord
给出当前片段的坐标,其原点位于左下角。
根据docs:
可以通过使用origin_upper_left标识符重新声明gl_FragCoord来更改gl_FragCoord的来源
但是,我找不到要重新声明的语法或gl_FragCoord的任何示例。
如何用两个可能的起源gl_FragCoord
或origin_upper_left
中的一个重新声明pixel_center_integer
?
答案 0 :(得分:2)
该文档适用于OpenGL4.x。您正在使用WebGL。它描述的是WebGL不具备的功能。
对于它的价值,重新声明它看起来像这样:
layout(pixel_center_integer) in vec4 gl_FragCoord;
但这需要桌面GLSL 1.50或更高版本;甚至OpenGL ES 3.2也没有此功能。
答案 1 :(得分:0)
无法在WebGL1或2中重新声明gl_FragCoord
正如@Nicol指出的那样,这些文档适用于OpenGL。 WebGL不是基于OpenGL,而是基于 OpenGL ES 。是的,但他们不是同一回事。
与WebGL1相关的文档链接在WebGL1 spec
中[GLES20]
OpenGL® ES Common Profile Specification Version 2.0.25,A。Munshi,J。Leech,2010年11月。
[GLES20GLSL]
The OpenGL® ES Shading Language Version 1.00,R。Simpson,2009年5月。
与WebGL2相关的文档已链接到WebGL2 spec
[GLES30]
OpenGL® ES Version 3.0.4,B。Lipchak 2014。
[GLES30GLSL]
The OpenGL® ES Shading Language Version 3.00.6,R。Simpson,2016年1月。
阅读WebGL的OpenGL规范只会使您感到困惑,并为您提供错误的信息
如果要参考页the ES 2.0 reference pages are here和the ES 3.0 reference pages are here
当然要注意there are differences between OpenGL ES 2.0 and WebGL1和there are differences between OpenGL ES 3.0 and WebGL2。这些差异记录在上面链接的2个WebGL规范中。