【发布时间】:2020-05-16 13:45:00
【问题描述】:
我目前使用 glfw 和 pyopengl 编写了一个简单的窗口类。现在,我想将它与 qt 小部件一起使用。
我发现 QGLWidget 提供了 3 个函数来重新实现:paintGL, resizeGL, initializeGL。不幸的是,上下文创建和所有绘图都是使用 glfw 和 pyopengl 创建的。
那么,有没有可能以某种方式将它与 QGLWidget 一起使用?
这是一个窗口代码:
class Viewport(object):
def __init__(self, widht, height, title="OpenGL Window", r=0.2, g=0.3, b=0.3, a=1.0):
super().__init__()
self.widht = widht
self.height = height
self.window_title = title
self.background_color = (r, g, b, a)
self.__check_glfw()
self.window = self.__create_window()
def main_loop(self):
while not glfw.window_should_close(self.window):
self.processEvents(self.window)
glClearColor(0.2, 0.3, 0.3, 1.0)
glClear(GL_COLOR_BUFFER_BIT)
# DO STUFF HERE
#--------------
glfw.swap_buffers(self.window)
glfw.poll_events()
glfw.terminate()
def processEvents(self, window):
if glfw.get_key(window, glfw.KEY_ESCAPE) is glfw.PRESS:
glfw.set_window_should_close(window, True)
def __create_window(self):
window = glfw.create_window(self.widht, self.height, self.window_title, None, None)
# check if window was created
if not window:
glfw.terminate()
dialog = ExceptionDialog("GLWFError::Cannot initialize window")
glfw.set_window_pos(window, 400, 200)
glfw.make_context_current(window)
return window
def __check_glfw(self):
# Initiallize gflw
if not glfw.init():
dialog = ExceptionDialog("GLFWError::The GLFW lib cannot initialized")
【问题讨论】:
-
你不能混合使用 glfw 和 qt