OpenGL和弃用新手

时间:2010-01-16 21:58:42

标签: python opengl deprecated pyopengl opengl-3

我已经开始使用PyOpenGL 3.0.1b在Python中使用OpenGL。

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

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

几小时后,没有这样的运气!不推荐使用的示例代码之后不推荐使用的示例代码...在某处我可以使用不推荐的教程吗?

3 个答案:

答案 0 :(得分:4)

感谢Jason L. McKesson

这里没有弃用代码的精彩示例和教程(在OpenGL 3.3中)

http://www.arcsynthesis.org/gltut/index.html

另一个没有太多解释(在OpenGL 4.x和3.3中)

http://openglbook.com/the-book/

答案 1 :(得分:2)

OpenGL ES 2.0实际上与OpenGL 3非常相似,删除了一些功能(例如多个渲染目标,一些着色器指令等)。 OpenGL ES 2.0编程指南书中有一些可供下载的教程和源代码,可以帮助您开始使用OpenGL 3.0。 ES 2.0中的编译也将编译为更新的OpenGL规范。您也可以在线搜索ES 2.0教程。

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

答案 2 :(得分:2)

我建议学习的方法是采用固定的功能程序,然后通过一次添加每个位慢慢开始将其转换为核心配置文件。基本上你需要解决3个主要问题,不幸的是,它们都相当大并且相互联系,如果你在屏幕上没有得到任何东西,你就不知道哪个位被打破了。但是,如果你能以正确的方式去做,你应该没事。

首先学习顶点缓冲对象和顶点数组对象。抛弃glBegin,glEnd,glVertex3f,glColor4f,glNormal3f,glTexCoord2f等......

学习手动矩阵变换以消除glRotatef,glTranslate,glPushMatrix,glPopMatrix,glMatrixMode,glLoadIdentity,GL_PROJECTION,GL_MODELVIEW,glFrustum,glOrtho,gluLookAt,gluPerspective,gluOrtho2。我建议看一下OpenGL网站在SDK中提到的glm。当您仍然在非核心配置文件上使用固定功能组件时,您可以使用glLoadMatrixf手动加载矩阵,稍后您需要将矩阵绑定到着色器。

学习基本的GLSL着色器。已弃用的gl_vertex,gl_normal,ftransform()应该仍然可以与VBO一起使用,您可以使用它们,直到您完全设置着色器绑定。

然后执行所有着色器绑定,使用顶点属性而不是固定的gl_vertex和gl_position。使用uniform来上传模型视图和投影矩阵而不是ftransform()。光和材料属性之类的东西(我倾向于上传模型视图投影而不仅仅是投影,因此着色器不会每次计算)。

最后使用核心配置文件,您将需要一个支持创建一个的窗口工具包。 GLUT,GLFW。 SMFL没有。 SDL 1.3-dev确实如此。我不认为pygame不幸。核心配置文件将放弃任何已弃用的功能。