同时使用pyglet和pyopengl的问题
我有以下这段代码:
import pyglet
from OpenGL.GL import *
from OpenGL.GLU import *
class Window(pyglet.window.Window):
def __init__(self,width,height):
super(Window,self).__init__(width,height)
glClearDepth(1.0)
glDepthFunc(GL_LESS)
glEnable(GL_DEPTH_TEST)
glShadeModel(GL_SMOOTH)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
def on_draw(self):
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
#I know this is deprecated
glTranslatef(0.0,0.0,-5.0)
glColor3f(1.0,1.0,1.0)
glBegin(GL_TRIANGLES)
glVertex3f(0.0,0.0,0.0)
glVertex3f(0.0,1.0,0.0)
glVertex3f(1.0,0.0,0.0)
glEnd()
def on_resize(self,width,height):
glViewport(0,0,width,height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(45.0,float(width)/float(height),0.1,100.0)
glMatrixMode(GL_MODELVIEW)
当我使用pyglet的OpenGL绑定时,一切都正常。但是,当我使用pyopengl时,我看到的只是一些乱七八糟的东西。
3 个回答
1
我可以确认,PyOpenGL和Pyglet是可以一起使用的。因为Python的OpenGL调用其实只是对同一个GL头文件和动态链接库的封装,它们都指向同样的函数。
我也可以确认,你的代码是可以渲染的。
我是在使用Pyglet的源代码,你可以尝试以下方法直接从代码库安装最新版本。
pip install hg+https://pyglet.googlecode.com/hg/
你需要先安装Mercurial。如果你在使用虚拟环境,可以直接使用:
pip install mercurial
1
我得同意Nicol的看法。每个程序都认为这个窗口是它的,所以只有一个程序能正确显示。你可以试试用PyOpenGL来创建窗口。另外,要获取Esc键的代码,可以这样写:
escape = chr(27)
祝你好运!
3
每个工具包都认为OpenGL窗口是属于他们自己的。实际上,只有一个工具包是对的,因此只有那个工具包才能正确地显示内容。
因为它们都可以使用OpenGL,所以在同一个程序中没有必要同时使用两个工具包。