2013-04-01 67 views
2

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

在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。

回答

2

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?

get_info在pyglet 1.2之前不是Context方法,并且pyglet 1.1没有OpenGL 3示例。

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

+0

我正在使用Pyglet的当前版本(1.1.4),现在已升级到1.2,这已经解决了我的问题(它为我创建了一个OpenGL 3.3上下文)。谢谢! – doeke