在NVIDIA上使用'#version 330 core',
使用glBindAttribLocation(program,0,“in_Vertex”);输入顶点使用“in vec4 in_Vertex;”。但是,我注意到在客户端应用程序中没有OGL函数调用,它仍然有效。它似乎是'默认的第一个输入变量'。为什么?它应该被省略还是通过glBindAttribLocation显式连接到它? [符合标准的理想是什么?]另外“在vec4 gl_Vertex中”当规范调用它不推荐使用时,着色器的编译器不会发出任何警告。为什么?我原以为它至少会发出警告。我想最后一个可能是编译器中的错误(GLSL编译器),但第一个问题尤其令人费解。
答案 0 :(得分:3)
如果您没有将属性绑定到某个位置,GL将为您执行此操作。它使用的位置未指定,但您碰巧具有相同的值。
glGetAttribLocation
该标准使这两个选项保持打开状态,因为每个选项都有有效的用例。
至于弃用,nvidia明确表示他们贬值是错误的决定。最后,有人必须编写代码来发出警告......所以即使他们应该这样做,他们也不会发出警告也就不足为奇了。