【问题标题】:A problem with using pyglet and pyopengl together一起使用 pyglet 和 pyopengl 的问题
【发布时间】: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 时,我只看到一团糟。

【问题讨论】:

    标签: python opengl pyglet 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 中对我来说很好,也许在其他操作系统中存在问题?
      猜你喜欢
      • 2010-09-21
      • 2013-06-18
      • 2012-10-10
      • 2016-02-03
      • 2019-04-23
      • 2019-07-12
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多