我建议学习的方式是采取固定功能程序,并慢慢开始将其转换为核心配置文件,每次添加每一位。基本上你需要解决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,您可以使用它们,直到着色器绑定完全安装。
然后执行所有着色器绑定,使用顶点属性而不是固定的gl_vertex和gl_position。使用uniform来上传模型视图,然后使用投影矩阵而不是ftransform()。以及诸如灯光和材质属性之类的东西(我倾向于上传模型视图投影,而不仅仅是投影,因此着色器不会每次计算)。
最后使用核心配置文件,您将需要一个支持创建一个窗口工具包。 GLUT,GLFW呢。 SMFL没有。 SDL 1.3-dev的确如此。我不认为pygame很遗憾。核心配置文件将丢弃任何遗留下来的弃用功能。
不是一个例子,但这个论坛帖子有一点“帮助,我什么都不能画!”种类的帮助:http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=252272 – 2010-01-16 22:10:46
虽然如果你是全新的OpenGL,我会认真地推荐先学习OpenGL 2风格(大量的教程在那)。对于初学者来说,2.x更直接,而且稍后切换到3.x并不难。 – 2010-01-16 22:12:11
我认为从OpenGL 2.x开始危险。有很多方法可以在2.x中完成,并且很有可能你会开始学习那些在3.x中不推荐使用的方法。 – 2010-01-18 19:48:20