C++ OpenGL每对象材质

C++ OpenGL每对象材质,c++,opengl,3d,lighting,shading,C++,Opengl,3d,Lighting,Shading,我正在用OpenGL 3.3编写我的第一个3D程序,我发现为不同的对象设置不同的材质有问题。我设法绘制了3个球体(顶点存储在一个VAO中,然后转换并绘制),并使用制服从顶点着色器更改了它们的外观。现在的问题是球体应该有不同的材质,但我不知道如何为每个球体设置不同的制服。最好的方法是什么 可以使用gl_VertexID。但在这种情况下,我认为最好的是独立的vbo 独立vbo是什么意思?您是否建议我对每个球体使用一个vbo?然后,我应该将材料存储在vbo?smth中,如具有mat系数的vec4。像v

我正在用OpenGL 3.3编写我的第一个3D程序,我发现为不同的对象设置不同的材质有问题。我设法绘制了3个球体(顶点存储在一个VAO中,然后转换并绘制),并使用制服从顶点着色器更改了它们的外观。现在的问题是球体应该有不同的材质,但我不知道如何为每个球体设置不同的制服。最好的方法是什么

可以使用gl_VertexID。但在这种情况下,我认为最好的是独立的vbo


独立vbo是什么意思?您是否建议我对每个球体使用一个vbo?然后,我应该将材料存储在vbo?smth中,如具有mat系数的vec4。像vbo和normalsWorks一样有魅力!材质在某种程度上相当于着色器程序。您可以绑定不同的纹理和制服,并在渲染对象时简单地将其添加到GlUseProgram()中。因此,在渲染每个球体之前,请绑定程序并统一材质属性(即纹理等)