【发布时间】:2016-07-14 23:43:10
【问题描述】:
我将普通数据缓冲到一个 VBO,然后使用 glVertexAttribPointer 指向它:
glVertexAttribPointer(<INDEX?>, 3, GL_FLOAT, GL_FALSE, 0, NULL);
但是,如果我希望将数据绑定到着色器中的 gl_Normal 属性,我应该为第一个参数(索引)使用什么值?
我使用的是 NVidia 卡,我在这里读到 https://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/attributes.php 对于这些类型的卡,gl_Normal 始终位于索引 2。但是我怎么知道 gl_Normal 在其他卡的这个索引处呢?
另外,使用 2 的索引似乎不起作用,并且着色器中的 gl_Normal 数据都是 (0,0,0)。
我知道 glGetAttribLocation 和 glBindAttribLocation,但是文档明确指出,如果尝试使用以“gl_”开头的内置顶点属性之一,该函数将引发错误。
编辑: 将 OpenGL 3.0 与 GLSL 130 结合使用。
【问题讨论】: