I'm having a problem with vertical synchronization/refresh with a map browser application.
When the application is running and I am scrolling around the map space I see a subtle vertical shift that starts at the bottom of the screen and flows to the top.
I am using a wxGlCanvas, the scrolling display is updated on a 12 ms recursive animation timer. My first thought was that there were perhaps other timers in the application firing off, this was not the case. I then checked the vertical sync setting on the video card, it was on. So far so good
The code snippet is below:
class MapWindow(glcanvas.GLCanvas):
def __init__(self,parent):
glcanvas.GLCanvas.__init__(self,parent)
def OnPaint(self, event=None):
dc = wx.PaintDC(self)
self.SetCurrent() #set this canvas to recieve Opengl calls
self.DrawGL() #call to draw opengl model
self.SwapBuffers()
From my understanding SwapBuffers() will sync the buffer swap with the vertical refresh of the hardware. I believe the problem my be in the glCanvas. After searching through various posts it seems the glcanvas does double buffer, but when I check the class reference documents there is a Constant WX_GL_DOUBLEBUFFER. Is it necessary to include this constant? In addtion I'm not sure about the syntax since these constants are in a attribList.
I think this may be the crux of the problem, any suggestions would be appreciated.
Ian
|