【问题标题】:Unable to clear OpenGL viewport无法清除 OpenGL 视口
【发布时间】:2014-07-08 03:28:58
【问题描述】:

我复制了this script (pasted below) 并运行了它。不幸的是,图像出现混乱,如下所示。谁能帮我摆脱它?

配置:

  • Ubuntu 13.10
  • pyopengl 3.0.1b1
  • 显卡 AMD Radeon HD 6650M
  • OpenGL 版本字符串:3.0 Mesa 10.3.0-devel (git-32c5544 saucy-oibaf-ppa)

    from OpenGL.GL import *
    from PyQt4 import QtGui
    from PyQt4.QtOpenGL import *
    
        class WfWidget(QGLWidget):
            def __init__(self, parent = None):
                super(WfWidget, self).__init__(parent)
    
            def paintGL(self):
                glClearColor(0,0,0,0)
                glColor3f(0.0, 0.0, 1.0)
                glRectf(-5, -5, 5, 5)
                glColor3f(1.0, 0.0, 0.0)
                glBegin(GL_LINES)
                glVertex3f(0, 0, 0)
                glVertex3f(20, 20, 0)
                glEnd()
    
            def resizeGL(self, w, h):
                glMatrixMode(GL_PROJECTION)
                glLoadIdentity()
                glOrtho(-50, 50, -50, 50, -50.0, 50.0)
                glViewport(0, 0, w, h)
    
            def initializeGL(self):
                glClearColor(0.0, 0.0, 0.0, 1.0)
                glClear(GL_COLOR_BUFFER_BIT)
    
    if __name__ == '__main__':
        app = QtGui.QApplication(["Winfred's PyQt OpenGL"])
        widget = WfWidget()
        widget.show()
        app.exec_()
    

【问题讨论】:

标签: python-2.7 opengl pyopengl


【解决方案1】:

glClear 移动到paint 方法:

def paintGL(self):
    glClear(GL_COLOR_BUFFER_BIT)
    glColor3f(0.0, 0.0, 1.0)
    glRectf(-5, -5, 5, 5)
    glColor3f(1.0, 0.0, 0.0)
    glBegin(GL_LINES)
    glVertex3f(0, 0, 0)
    glVertex3f(20, 20, 0)
    glEnd()

也在这里:

    def initializeGL(self):
        glColor3f(0.0, 0.0, 1.0)

这里不需要glClear。 产生:

【讨论】:

  • 不过,您可能希望在glClearColor() 之后调用glClear()。或者根本没有在paintGL() 中调用glClearColor(),因为在initializeGL() 中有它就足够了。在glClear() 之后调用它没有任何用处。
  • @RetoKoradi:哦,是的,错过了...谢谢!
  • 有趣的是,来这里搜索可能是因为在 Linux 上发生这种情况的原因:1)您正确设置了所有内容 2)您清除了 3)您之后没有画任何东西(除了冲洗或完成) 4)您交换缓冲区 - 并且没有任何内容被清除[绘制任何东西也可以清楚地发生] 要点是:GL实现/驱动程序中也可能存在导致此问题的错误:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-08
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多