Когда я вызываю QGLBuffer.allocate, QGLWidget.renderText перестает работать полностью. Фактически все функции QPainter перестают работать, если вы перегружаете QGLwidget.paintEvent
Следующий код PySide демонстрирует проблему. Откроется два окна QGLwidget:
- один вызывает QGLBuffer.allocate, и вы не можете видеть текст.
- Другой отлично работает.
Код:
from PySide.QtGui import *
from PySide.QtOpenGL import *
from OpenGL.GL import *
import sys
class GLWidget(QGLWidget):
def __init__(self, alloc=False):
QGLWidget.__init__(self)
self.alloc = alloc
def initializeGL(self):
self.buffer = buffer = QGLBuffer(QGLBuffer.VertexBuffer)
buffer.create()
buffer.bind()
buffer.setUsagePattern(QGLBuffer.StaticDraw)
if self.alloc: # If true text will not be drawn
buffer.allocate(80)
def resizeGL(self, h, w):
glViewport(0, 0, h, w)
def paintGL(self):
glClearColor(1, 1, 1, 1)
glClear(GL_COLOR_BUFFER_BIT)
glColor(0, 0, 0, 1)
self.renderText(50, 50, "Text to Render")
def main(argv):
app = QApplication(argv)
widget = GLWidget(alloc=True)
widget.show()
widget2 = GLWidget(alloc=False)
widget2.show()
app.exec_()
if __name__ == '__main__':
main(sys.argv)
Кто-нибудь может указать мне правильное направление?