【问题标题】:OpenGL ES 2.0: Attribute vs Layout?OpenGL ES 2.0:属性与布局?
【发布时间】:2017-03-01 07:21:07
【问题描述】:

我在顶点着色器中使用“属性”来定义几个变量,如下所示:

attribute mediump vec4 Position;
attribute lowp vec4 SourceColor;

环顾四周,我发现了一个叫做“布局”的东西,它似乎可以完成同样的任务。

例如我认为上面可以改写为:

layout(location = 0) in vec4 Position;
layout(location = 1) in vec4 SourceColor;

我以前从未使用过布局,所以我不确定它是否同样有效,但它看起来与我非常相似,而且 wiki 页面并不能特别帮助我区分它们。

谁能解释一下属性和布局的区别?

【问题讨论】:

    标签: opengl-es glsl vertex-shader


    【解决方案1】:

    您看到的是不同版本的 GLSL。

    在 OpenGLES2 中,唯一可用的 GLSL 版本是 GLSL ES 100。这看起来像您发布的第一个代码块。

    在 OpenGLES3 中,您仍然可以使用 GLSLES 100,但也可以使用 GLSL ES 300,看起来像后一篇文章。

    除了 GLSL ES 版本之外,还有许多桌面 GLSL 版本。这个doc 可能会帮助您了解一些情况。

    TLDR - 您的第一个代码 sn-p 是旧方法,第二个代码 sn-p 是新方法。使用 OpenGLES 2,您唯一的选择是旧方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      相关资源
      最近更新 更多