我建议学习的方法是采用一个固定功能的程序,然后通过一次添加一个位,慢慢开始将其变成一个核心配置文件。基本上有 3 件主要的事情你需要解决,不幸的是,它们都相当大,并且以这样的方式相互关联,如果你没有在屏幕上看到任何东西,你就不知道哪个位坏了。但如果你能以正确的方式去做,你应该没问题。
首先学习顶点缓冲区对象和顶点数组对象。放弃 glBegin、glEnd、glVertex3f、glColor4f、glNormal3f、glTexCoord2f 等...
学习手动矩阵转换以抛弃 glRotatef、glTranslate、glPushMatrix、glPopMatrix、glMatrixMode、glLoadIdentity、GL_PROJECTION、GL_MODELVIEW、glFrustum、glOrtho、gluLookAt、gluPerspective、gluOrtho2。我建议查看 glm,这是 OpenGL 网站在其 SDK 中提到的。当您仍在非核心配置文件上使用固定功能组件时,您可以使用 glLoadMatrixf 手动加载矩阵,稍后您需要将矩阵绑定到着色器。
学习基本的 GLSL 着色器。不推荐使用的 gl_vertex、gl_normal、ftransform() 仍应与 VBO 一起使用,您可以在完全设置着色器绑定之前使用它们。
然后做所有的shader绑定,用顶点属性代替固定的gl_vertex和gl_position。使用统一上传模型视图和投影矩阵而不是 ftransform()。以及诸如灯光和材质属性之类的东西(我倾向于上传模型视图投影而不仅仅是投影,因此着色器不会每次都计算)。
最后使用核心配置文件,您将需要一个支持创建的窗口工具包。过剩,GLFW 做。SMFL 没有。SDL 1.3-dev 可以。我不认为 pygame 不幸的是。核心配置文件将抛弃任何遗留的弃用功能。