一起使用 pyglet 和 pyopengl 的问题
Posted
技术标签:
【中文标题】一起使用 pyglet 和 pyopengl 的问题【英文标题】:A problem with using pyglet and pyopengl together 【发布时间】:2011-07-07 05:46:19 【问题描述】:我有以下代码:
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 时,我只看到一团糟。
【问题讨论】:
【参考方案1】:每个工具包都认为 OpenGL 窗口属于自己。只有其中一个是正确的,因此只有其中一个能够正确渲染。
由于它们都公开了 OpenGL,因此没有理由尝试在同一个程序中同时使用它们。
【讨论】:
【参考方案2】:我必须同意尼科尔的观点。 每个人都认为窗口是自己的,所以只有一个人才能正确渲染,不如试试用PyOpenGL创建窗口,呵呵,获取Escape的关键代码: 转义 = chr(27) 祝你好运!
【讨论】:
我会写这是将来的评论,而不是答案 :) 如果一个人是邪恶的,可能会给你负面的分数。【参考方案3】:我可以确认 PyOpenGL 和 Pyglet 确实可以协同工作。 由于 python opengl 调用只是地址空间中相同 GL 标头/dll 的包装器,它们都重定向到相同的函数。
我还可以确认您的代码已呈现。
我正在使用源代码的 Pyglet,尝试以下直接从存储库 HEAD 安装。
pip install hg+https://pyglet.googlecode.com/hg/
您需要安装 mercurial。如果您使用的是 virtualenv,您可以简单地使用:
pip install mercurial
【讨论】:
该示例在 Linux 中对我来说很好,也许在其他操作系统中存在问题?以上是关于一起使用 pyglet 和 pyopengl 的问题的主要内容,如果未能解决你的问题,请参考以下文章
编码和解码与pyglet一起使用的.gif文件,并使用pyinstaller制作成.exe文件