5

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

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

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

几个小时后,没有这样的运气!弃用示例代码后弃用的示例代码......我可以在某个地方获取非弃用教程吗?

4

3 回答 3

3

感谢 Jason L. McKesson

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

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

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

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

于 2011-10-05T12:21:36.167 回答
2

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

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

于 2010-01-17T07:38:06.980 回答
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 一起使用,您可以在完全设置着色器绑定之前使用它们。

然后做所有的shader绑定,用顶点属性代替固定的gl_vertex和gl_position。使用统一上传模型视图和投影矩阵而不是 ftransform()。以及诸如灯光和材质属性之类的东西(我倾向于上传模型视图投影而不仅仅是投影,因此着色器不会每次都计算)。

最后使用核心配置文件,您将需要一个支持创建的窗口工具包。过剩,GLFW 做。SMFL 没有。SDL 1.3-dev 可以。我不认为 pygame 不幸的是。核心配置文件将抛弃任何遗留的弃用功能。

于 2011-10-05T13:04:48.080 回答