openGL with mayapyqt:爲什麼QGLWidget受瑪雅事件的影響?
我用QGLWidget做了一個openGL視圖。與Maya合作時遇到問題。正如你在視頻中看到的那樣,當我點擊並在Maya中的modelPanel上移動時,QGLWidget就會崩潰。我發現在我的QGLWidget上顯示的是選框矩形,而不是Maya。爲什麼會出現這個問題?
到datenwolf
我試圖按照您的建議編輯我的代碼。但是......它根本不調用makeCurrent()和doneCurrent()。我希望當我點擊我的maya模型面板時,它可以向我發送消息,但事實並非如此。我錯過了什麼?對不起。
def makeCurrent(self):
import OpenGL.WGL as wgl
print "MAKE CURRENT!!!"
self.prevHDC = wgl.wglGetCurrentDC()
self.prevHRC = wgl.wglGetCurretnContext()
super(GLWidget, self).makeCurrent()
def doneCurrent(self):
import OpenGL.WGL as wgl
print "DONE CURRENT!!!"
super(GLWidget, self).doneCurrent()
wgl.wglMakeCurrent(self.prevHDC, self.prevHRC)
我寫得和上面一樣。但它甚至不顯示「MESSAGE」。
謝謝您的回覆。但我無法理解你的答案。首先,我不知道緊靠QGLContext :(你的意思是,我不得不使用單緩衝溶液和交換 –
@炫geunKim嗎?不,我的意思是,在Qt的代碼某個地方有一條線wglMakeCurrent,使QGLWidgets OpenGL上下文接收所有的OpenGL調用,Maya也有類似的問題,Maya不會一直調用它,所以你的程序必須恢復它的上下文綁定,也就是清理它自己,這是通過鏡像來完成的該wglMakeCurrent呼籲用wglMakeCurrent調用Maya的GL上下文的GL上下文。wglGetCurrentContext可用於檢索。由於上下文結合發生QGLWidget來繪圖和QGLContext的「幕後」你要繼承他們增加這一點。 – datenwolf
在最後,我得到了你的建議,我想一樣,在我的定時器相關的方法。 'self.makeCurrent()'' self.updateGL()'' self.doneCurrent()' 但是,有了這段代碼,Maya就釋放了它自己的GL作品。 (我不能瑪雅modelPanel :(繪製選框)當然我窮在OpenGL的 –