【问题标题】:WebGL `uniform uint` Causes Syntax ErrorWebGL `uniform uint` 导致语法错误
【发布时间】:2017-06-30 04:19:54
【问题描述】:

我在 Windows 10 上使用 Google Chrome 版本 59.0.3071.115(官方版本)(64 位)。

我有一个看起来像这样的顶点着色器:

attribute vec3 aPosition;
attribute vec2 aTextureCoordinate;

uniform uint uLayer;
uniform vec2 uLocation;

varying highp vec2 vTextureCoordinate;

void main(void)
{
  gl_Position = vec4(aPosition + vec3(uLocation, 0.0), 1.0);
  vTextureCoordinate = aTextureCoordinate;
}

之前的版本没有第四行 (uniform unit uLayer;),它编译得很好。添加该行会导致ERROR: 0:5: 'uLayer' : syntax error。据我所知,这行在语法上没有任何问题,而且我找不到任何说明uniform uint 在顶点着色器中无效的内容。我在这里有什么遗漏吗?

【问题讨论】:

  • uint 在 glsl 100 中不存在,只有 int。你有它在 glsl 300 (webgl2)
  • 啊。谢谢 - 我应该考虑检查 WebGL 中指定的 GLSL 版本。如果您想将其添加为答案,我会将其标记为正确。

标签: glsl webgl vertex-shader glsles


【解决方案1】:

WebGL 1 使用 GLSL 100,它不支持 uint。 WebGL 2 使用 GLSL 300,它添加了uint

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-20
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多