首页 > 解决方案 > 可以将位置属性存储在0以外的属性号中吗

问题描述

在 OpenGL 中,我总是看到 position 属性总是放在属性 0 处。 position 属性是否可以放在数字 1 处?为什么位置属性总是在属性0?

标签: c++opengl

解决方案


在现已移除的gl_Vertex内置属性之外,没有“位置属性”之类的东西。GLSL不知道哪个属性对应于“位置”。它们都只是顶点着色器的数字;只有当您将某些东西分配给 时,它们才会有意义gl_Position

这是一个顶点着色器输出。您如何为该输出产生价值与 GLSL 无关。

话虽如此,旧版本的 OpenGL 确实为属性 0 赋予了特殊的权力。但这些主要是固定函数glBegin/End式编程的残余元素,它们不需要具有“位置”的含义。它唯一的特殊地位是你必须在那里放一些东西。也就是说,您不能不使用属性 0。

但同样,这早已从 OpenGL 中删除了。如今,人们只是习惯性地把“位置”放在那里。


推荐阅读