OpenglES 2.0顶点着色器属性

忍者编码

我在教程中已经读到,顶点着色器所需的最低要求定义如下:

attribute vec3 v3_variable;
attribute vec3 v3Pos;

void main()
{
    gl_Position = v3Pos;
}

OpenglES传递到顶点着色器数据v3Pos,但这个变量的名称实际上可以是任何东西,其他教程命名为a_Positiona_Pos,无论〜。

所以我的问题是,OpenglES如何知道在我打电话glVertexAttribPointer()时知道应该将数据放入v3Pos而不是v3_variable

死的

有两种方法可以识别着色器中的哪些属性与提供给您的数据“配对” glVertexAttribPointer您唯一获得的标识符glVertexAttribPointerindex(第一个参数),因此必须以某种方式通过索引来完成。

在第一种方法中,使用glGetAttribLocation编译并链接了着色器后,便从着色器获取属性的索引,并将其用作第一个参数,例如。

GLint program = ...;
GLint v3PosAttributeIndex = glGetAttribLocation(program, "v3Pos");
GLint v3varAttributeIndex = glGetAttribLocation(program, "v3_variable");
glVertexAttribPointer(v3PosAttributeIndex, ...);
glVertexAttribPointer(v3varAttributeIndex, ...);

您还可以在创作着色器时显式设置属性的布局(如@jp的注释所示),因此您可以像这样修改着色器:

layout(location = 1) in vec3 v3_variable;
layout(location = 0) in vec3 v3Pos;

然后在代码中,您将对其进行显式设置:

glVertexAttribPointer(0, ...); // v3Pos data
glVertexAttribPointer(1, ...); // v3_variable data

第二种方法仅适用于GLES 3.0+(和OpenGL 3.0+),因此,如果仅使用GLES 2.0,则可能不适用于您的情况。另外,请注意,您可以同时使用这两种方法。例如。即使您明确定义布局,也不会限制您以后查询它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

OpenglES 2.0顶点着色器属性

来自分类Dev

如果修改其中的顶点位置,则简单的OpenGLES 2顶点着色器将不起作用

来自分类Dev

着色器 opengles2 中的透明度

来自分类Dev

在 OpenGLES 着色器中使用 LUT 进行假着色

来自分类Dev

OpenGL ES2:在顶点着色器(iOS)中使用“ layout”关键字时语法错误

来自分类Dev

opengles 2.0无法编译片段着色器代码

来自分类Dev

OpenGL ES 2:将标量顶点属性传递给着色器程序

来自分类Dev

如何将OpenGLES着色器转换为与Metal兼容的着色器?

来自分类Dev

没有属性的顶点着色器

来自分类Dev

顶点着色器的OpenGL属性名称

来自分类Dev

顶点着色器属性位置中的损坏数据

来自分类Dev

如何在OpenGLES中为多个对象上的多个纹理设置片段着色器?

来自分类Dev

GLSL从“片段着色器”到“顶点着色器”发送颜色数据似乎总是等于0

来自分类Dev

将属性传递给OpenGL顶点着色器的行为异常

来自分类Dev

如何将属性传递给GLSL中的顶点着色器?

来自分类Dev

使用矩阵作为顶点着色器属性时发生崩溃

来自分类Dev

顶点着色器中的边界框

来自分类Dev

顶点着色器无法编译。找不到错误

来自分类Dev

无法在Maya插件中编译顶点着色器

来自分类Dev

glsl顶点着色器glGetUniformLocation失败

来自分类Dev

“构造函数”的参数过多[顶点着色器]

来自分类Dev

在顶点着色器中移动/旋转形状

来自分类Dev

WebGL-丢弃顶点着色器标记的片段

来自分类Dev

GPU如何处理顶点着色器?

来自分类Dev

如何为GPGPU扩展顶点着色器功能

来自分类Dev

顶点着色器中对复数的运算

来自分类Dev

OpenGL奇怪的顶点着色器问题

来自分类Dev

无法读取传递给顶点着色器的值

来自分类Dev

GLSL顶点着色器gl_Position值

Related 相关文章

  1. 1

    OpenglES 2.0顶点着色器属性

  2. 2

    如果修改其中的顶点位置,则简单的OpenGLES 2顶点着色器将不起作用

  3. 3

    着色器 opengles2 中的透明度

  4. 4

    在 OpenGLES 着色器中使用 LUT 进行假着色

  5. 5

    OpenGL ES2:在顶点着色器(iOS)中使用“ layout”关键字时语法错误

  6. 6

    opengles 2.0无法编译片段着色器代码

  7. 7

    OpenGL ES 2:将标量顶点属性传递给着色器程序

  8. 8

    如何将OpenGLES着色器转换为与Metal兼容的着色器?

  9. 9

    没有属性的顶点着色器

  10. 10

    顶点着色器的OpenGL属性名称

  11. 11

    顶点着色器属性位置中的损坏数据

  12. 12

    如何在OpenGLES中为多个对象上的多个纹理设置片段着色器?

  13. 13

    GLSL从“片段着色器”到“顶点着色器”发送颜色数据似乎总是等于0

  14. 14

    将属性传递给OpenGL顶点着色器的行为异常

  15. 15

    如何将属性传递给GLSL中的顶点着色器?

  16. 16

    使用矩阵作为顶点着色器属性时发生崩溃

  17. 17

    顶点着色器中的边界框

  18. 18

    顶点着色器无法编译。找不到错误

  19. 19

    无法在Maya插件中编译顶点着色器

  20. 20

    glsl顶点着色器glGetUniformLocation失败

  21. 21

    “构造函数”的参数过多[顶点着色器]

  22. 22

    在顶点着色器中移动/旋转形状

  23. 23

    WebGL-丢弃顶点着色器标记的片段

  24. 24

    GPU如何处理顶点着色器?

  25. 25

    如何为GPGPU扩展顶点着色器功能

  26. 26

    顶点着色器中对复数的运算

  27. 27

    OpenGL奇怪的顶点着色器问题

  28. 28

    无法读取传递给顶点着色器的值

  29. 29

    GLSL顶点着色器gl_Position值

热门标签

归档