이전에 사용했던 wxPython/PyOpenGL 코드에서 먼지를 뽑아 내고 있었지만 더 이상 사용하지 않았습니다. 한 모듈 또는 다른 모듈에서 일부 업데이트 후에 작동이 중지 된 것 같습니다.wxPython/PyOpenGL 코드가 glPushMatrix에서 오류를 발생시키는 이유는 무엇입니까?
다음은 오류를 재현하는 작은 샘플 앱입니다.
import wx
from wx import glcanvas
from OpenGL.GLUT import *
from OpenGL.GL import *
class WxMyTestApp(wx.App):
def __init__(self):
wx.App.__init__(self)
def OnInit(self):
self.viewFrame = wx.Frame(None, -1, 'viewFrame', wx.DefaultPosition, (400,400))
self.canvas = glcanvas.GLCanvas(self.viewFrame)
self.canvas.Bind(wx.EVT_PAINT, self.OnPaint)
return True
def OnPaint(self, ev):
print "OnPaint ",
dc = wx.PaintDC(self.canvas)
self.canvas.SetCurrent()
self.redraw(ev)
def redraw(self, ignoredEvent):
glPushMatrix()
glColor3f(1.0, 1.0, 0.0)
glLineWidth(1)
glutWireSphere(0.5, 10,10)
glPopMatrix()
glFlush()
self.canvas.SwapBuffers()
if __name__ == '__main__':
d = WxMyTestApp()
d.viewFrame.Show()
d.MainLoop()
테스트 코드를 실행 (내 실제 코드는 하나 개 이상의 창을 사용하기 때문에. 대신 wx.PySimpleApp의 wx.App를 사용하고 있습니다 주), 프레임이 왼쪽 상단 모서리에 작은 흰색 사각형을 보여줍니다 크기를 조정하면이 반복 오류가 발생합니다.
Traceback (most recent call last):
File "myTestApp.py", line 18, in OnPaint
self.redraw(ev)
File "myTestApp.py", line 20, in redraw
glPushMatrix()
File "C:\users\user\appdata\local\enthought\canopy\user\lib\site-packages\OpenGL\platform\baseplatform.py", line 402, in __call__
return self(*args, **named)
File "C:\users\user\appdata\local\enthought\canopy\user\lib\site-packages\OpenGL\error.py", line 232, in glCheckError
baseOperation = baseOperation,
OpenGL.error.GLError: GLError(
err = 1282,
description = 'invalid operation',
baseOperation = glPushMatrix,
cArguments =()
여기에 밀어 넣기를 수행하는 데 실제로 문제가 있습니까? 문제는 GL 장치 컨텍스트와 관련이 있지만 디버깅 방법을 모를 것으로 생각됩니다. Python 2.7.10, wxPython 3.0.2.0-3, PyOpenGL 3.1.0-2 (캐노피 배포판).