【问题标题】:What are the valid types for a WebGL vertex shader attribute?WebGL 顶点着色器属性的有效类型是什么?
【发布时间】:2018-03-15 03:45:49
【问题描述】:

以下属性看起来不错:

attribute vec4 coord;

以下属性抱怨属性“不能是 bool 或 int”:

attribute int ty;

以下属性抱怨“语法错误”:

attribute uint ty;

这些结果似乎相当随意。我找不到顶点着色器属性的有效类型列表。 属性类型在WebGL中是否有效的规则是什么?

【问题讨论】:

  • 您可能会发现参考图表很有用。 Here's the one for WebGLHere's the one for WebGL2。对于 WebGL1,它们位于页面右侧,“限定符”下方。遗憾的是,它们并未针对 WebGL2 列出,但 WebGL2 添加了 int、ivec2、ivec3、ivec4、uint、uvec2、uvec3、uvec4 以及所有新的非方阵类型

标签: opengl-es webgl vertex-shader


【解决方案1】:

OpenGL ES Shading Language 1.00 specification, page 36, section 4.3.3: "Attribute":

attribute 限定符用于声明从 OpenGL ES 逐个顶点传递给顶点着色器的变量。在除顶点着色器之外的任何类型的着色器中声明属性变量都是错误的。就顶点着色器而言,属性变量是只读的。属性变量的值通过 OpenGL ES 顶点 API 或作为顶点数组的一部分传递给顶点着色器。它们将顶点属性传递给顶点着色器,并且预计会在每次顶点着色器运行时发生变化。 attribute 限定符只能用于数据类型 floatvec2vec3vec4mat2mat3mat4。属性变量不能声明为数组或结构。

【讨论】:

    猜你喜欢
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多