【发布时间】:2017-11-30 13:30:45
【问题描述】:
我正在学习 PyOpenGL 并在 PyQt5 应用程序中使用它。我正在尝试将一些旧的简单示例从C++/Qt 转换为Python。以下示例应在黑色背景上绘制白色三角形。至少在相应的C++/Qt 代码中是这样。但它什么也没做,只是一个黑色的窗口。有什么我想念的想法吗?请注意,我需要使用着色器的“现代”方法(但据我所知 - 我可能错了 - 下面的代码应该只使用默认的普通着色器,即 2D 中的白色)而不是那些陈旧的 glBegin(), @ 987654329@.
import numpy as np
from OpenGL import GL
from PyQt5.QtWidgets import QOpenGLWidget, QApplication
class OpenGLWidget(QOpenGLWidget):
def initializeGL(self):
vertices = np.array([0.0, 1.0, -1.0, -1.0, 1.0, -1.0], dtype=np.float32)
bufferId = GL.glGenBuffers(1)
GL.glBindBuffer(GL.GL_ARRAY_BUFFER, bufferId)
GL.glBufferData(GL.GL_ARRAY_BUFFER, vertices.size, vertices, GL.GL_STATIC_DRAW)
GL.glEnableVertexAttribArray(0)
GL.glVertexAttribPointer(0, 2, GL.GL_FLOAT, GL.GL_FALSE, 0, 0)
def paintGL(self):
GL.glDrawArrays(GL.GL_TRIANGLES, 0, 3)
app = QApplication([])
widget = OpenGLWidget()
widget.show()
app.exec_()
【问题讨论】:
标签: python pyqt pyside pyopengl