在Python中创建向前兼容的OpenGL 3.x上下文
我正在使用wxPython,想要用一个基于OpenGL的画布,但我不想让这个画布支持那些过时的功能。我在Eclipse里查找过pyopengl和pyglet,但感觉它们似乎不支持这个。我之所以这么说,是因为我找不到用来给上下文分配属性的WGL函数,就像在这篇AMD的白皮书里提到的那样。而且在pyglet的文档中也没有提到在为上下文指定配置时有兼容性状态参数。我是不是漏掉了什么?有没有什么'Python'的解决方案,还是说我需要开始看看像ctypes这样的东西?
编辑:在阅读了一些文档后,我发现OpenGL
的pyopengl模块里有一个叫FORWARD_COMPATIBLE_ONLY
的标志,它可以过滤掉OpenGL.GL
中的过时入口点,但这只适用于这个模块。我在pyopengl网站的OpenGL 3.x过时功能部分也看到了相关的说明,但之前没注意到。如果这意味着GLSL的过时功能也会被保护起来,那这看起来是个解决方案。
1 个回答
1
我不能绝对说没有办法做到这一点,但我可以指出,最近对OpenGL的修改反响很差,所以我怀疑开发者会急着把这种东西加入他们的库里。
比如,pyglet的核心渲染功能主要依赖于旧的预着色系统,因此它没有太多理由去提供一种方式来淘汰所有旧的功能。
我想,如果你想在这个早期阶段实现这个功能,你可能得自己动手去做。