2010-01-16 39 views
4

我已经开始在Python中使用PyOpenGL 3.0.1b玩弄OpenGL。OpenGL新手和弃用

我看了一些示例代码,并开始运行它并修改它等等。一切都很好,直到我变得不那么无知。

http://pyopengl.sourceforge.net/documentation/manual-3.0/index.xhtml上列出OpenGL函数以及它们是否被弃用。所以我想我自己,我只需要找到一些最新的教程,不使用所有这些废弃的废话。

小时后,没有这样的运气!弃用的示例代码之后弃用的示例代码...是否有某处我可以用于非弃用的教程?

+1

不是一个例子,但这个论坛帖子有一点“帮助,我什么都不能画!”种类的帮助:http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=252272 – 2010-01-16 22:10:46

+1

虽然如果你是全新的OpenGL,我会认真地推荐先学习OpenGL 2风格(大量的教程在那)。对于初学者来说,2.x更直接,而且稍后切换到3.x并不难。 – 2010-01-16 22:12:11

+2

我认为从OpenGL 2.x开始危险。有很多方法可以在2.x中完成,并且很有可能你会开始学习那些在3.x中不推荐使用的方法。 – 2010-01-18 19:48:20

回答

2

OpenGL ES 2.0实际上与OpenGL 3非常相似,并且删除了一些功能(例如多个渲染目标,一些着色指令等)。 OpenGL ES 2.0编程指南手册提供了一些可供下载的教程和源代码,可帮助您开始使用OpenGL 3.0。大多数情况下,ES 2.0中编译的内容也会针对较新的OpenGL规范进行编译。您也可以在线搜索ES 2.0教程。

我还建议检查我正在开发的图形引擎(OpenREng)。您可以查看OpenGL包装类以查看更新规范中支持的大多数功能。

+2

小挑剔。 GL3与GL ES 2.0非常相似。毕竟,ES 2.0是第一个被指定的。 – Bahbar 2010-01-17 09:02:43

+0

@Bahbar我不知道为什么相似性应该按时间顺序排列。它不是一个对称的属性? – 2011-10-05 12:27:18

+0

我不想建议通过GLES学习桌面GL,因为这会带来更多问题。 @OP查看tomriddle的答案,如果您仍然对此感兴趣,并且还没有犯错,您可以购买一本您不打算使用的API的书籍。 – 2011-10-05 12:30:17

2

我建议学习的方式是采取固定功能程序,并慢慢开始将其转换为核心配置文件,每次添加每一位。基本上你需要解决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很遗憾。核心配置文件将丢弃任何遗留下来的弃用功能。

+1

虽然这是一个比较好的想法,但是一旦他找到了一些学习资源,它就更像是一次训练练习,因此并没有真正回答这个问题。 – 2011-10-05 13:24:14