我有一点经验编写的OpenGL 2应用程序并希望使用OpenGL 3为此,我已经买了艾迪生韦斯利"红书"和"橙色书"(GLSL)的descirbe的固定功能的折旧和学习新的可编程管道(着色器).但是我无法理解的是如何构建一个具有多个对象的场景而不使用已弃用的translate*,rotate*和scale*函数.
我以前在OGL2中做的是使用translate和rotate函数在3D空间中"移动",并使用glBegin ... glEnd在本地坐标中创建我想要的对象.在OGL3中,这些函数都被弃用了,据我所知,它被着色器取代.但是我不能为我制作的每一个对象调用着色器程序,是吗?这不会影响所有其他对象吗?
我不确定我是否已经解释了我的问题令人满意,但其核心是如何使用OpenGL 3.1中本地坐标中定义的多个对象编程场景.我发现的所有初学者教程只使用一个对象而没有/解决这个问题.
编辑:想象一下,你想要两个旋转立方体.手动修改每个顶点坐标会很痛苦,你不能简单地修改模型视图矩阵,因为这样可能会使摄像机围绕两个静态立方体旋转......
opengl ×1