如何使用Pyglet创建OpenGL 3.0上下文

时间:2013-04-01 23:21:02

标签: python opengl py2exe opengl-3 pyglet

我想使用OpenGL 3.0功能(帧缓冲对象,2D纹理数组),但Pyglet创建的默认OpenGL上下文不支持这些。

在Pyglet源代码中有以下示例:https://code.google.com/p/pyglet/source/browse/examples/opengl_3.py

可悲的是,这个例子最后一次编辑是在2008年,似乎不再有效(get_info()不再是一个上下文方法),甚至major_versionminor_version参数都没有似乎再次被使用了。

然而,有什么用的是将PyOpenGL与Pyglet结合使用。这是获取OpenGL 3.0+的唯一途径吗?无论我最终使用什么方法,都必须使用Py2exe。

1 个答案:

答案 0 :(得分:3)

pyglet应该自动创建最高版本的上下文。您的硬件/驱动程序是否支持OpenGL 3?

$ python -c "from pyglet.window import Window; print(Window().context.get_info
().get_version())"
4.2.0

major_versionminor_version似乎也有效:

$ python -c "from pyglet.window import Window; \
             from pyglet.gl import Config; \
             print(Window(config=Config(major_version=3, minor_version=2))\
                     .context.get_info().get_version())"
3.2.0

get_infostill a Context method。你用什么pyglet?

在pyglet 1.2之前,

get_info不是Context方法,并且没有使用pyglet 1.1的OpenGL 3示例。

你应该使用pyglet 1.2 alpha(或最新的源代码)。