在之前的OpenGL版本里,每个属性都对应了一个特定的通道,我们使用glVertex,glTexCoord,,glNormal(或者通过访问指针函数glVertexPointer, glTexCoordPointer, orglNormalPointer)等函数来访问和设置它们。随后,shader会自己通过内置变量gl_Vertex 和 gl_Normal来访问这些属性。但在OpenGL3.0版本里,这些都被弃用了。在后续版本里,甚至都被移除了。
glVertexPointer设置顶点数组,只能是顶点位置,其它的需要调用glColorPointer、glNormalPointer等来实现。是客户端的
glVertexAttribPointer设置顶点属性数组,可以是顶点位置、颜色、法线、纹理等等,是GPU端的
openGL之API学习(三十一)glVertexAttribPointer
openGL之API学习(一六九)glVertexPointer
C++学习(三零九)osg::VertexArrayState的作用