}
}
-void WXGLSwapBuffers( WXGLContext context )
+WXGLContext WXGLGetCurrentContext()
{
- aglSwapBuffers(context);
+ return aglGetCurrentContext();
}
-WXGLContext WXGLGetCurrentContext()
+bool WXGLSetCurrentContext(WXGLContext context)
{
- return aglGetCurrentContext();
+ if ( !aglSetCurrentContext(context) )
+ {
+ wxLogAGLError("aglSetCurrentContext");
+ return false;
+ }
+
+ return true;
}
void WXGLDestroyPixelFormat( WXGLPixelFormat pixelFormat )
GLint bufnummer = win.GetAglBufferName();
aglSetInteger(m_glContext, AGL_BUFFER_NAME, &bufnummer);
//win.SetLastContext(m_glContext);
-
+
const_cast<wxGLCanvas&>(win).SetViewport();
if ( !aglSetDrawable(m_glContext, drawable) )
return false;
}
- if ( !aglSetCurrentContext(m_glContext) )
- {
- wxLogAGLError("aglSetCurrentContext");
- return false;
- }
- return true;
+ return WXGLSetCurrentContext(m_glContext);
}
// ----------------------------------------------------------------------------
/*
-sharing contexts under AGL is not straightforward, to quote from
+sharing contexts under AGL is not straightforward, to quote from
http://lists.apple.com/archives/mac-opengl/2003/Jan/msg00402.html :
-In Carbon OpenGL (AGL) you would use call aglSetInteger to setup a
-buffer name and attached each context to that same name. From AGL
+In Carbon OpenGL (AGL) you would use call aglSetInteger to setup a
+buffer name and attached each context to that same name. From AGL
you can do:
GLint id = 1;
ctx1 = aglCreateContext...
aglSetInteger(ctx1, AGL_BUFFER_NAME, &id); // create name
-aglAttachDrawable (ctx1,...); // create surface with associated with
+aglAttachDrawable (ctx1,...); // create surface with associated with
name (first time)
ctx2 = aglCreateContext...
aglSetInteger(ctx2, AGL_BUFFER_NAME, &id); // uses previously created name
*/
/*
-so what I'm doing is to have a dummy aglContext attached to a wxGLCanvas,
+so what I'm doing is to have a dummy aglContext attached to a wxGLCanvas,
assign it a buffer number
*/
static GLint gCurrentBufferName = 1;
m_bufferName = gCurrentBufferName++;
- aglSetInteger (m_dummyContext, AGL_BUFFER_NAME, &m_bufferName);
-
+ aglSetInteger (m_dummyContext, AGL_BUFFER_NAME, &m_bufferName);
+
AGLDrawable drawable = (AGLDrawable)GetWindowPort(MAC_WXHWND(MacGetTopLevelWindowRef()));
aglSetDrawable(m_dummyContext, drawable);
{
if ( m_glFormat )
WXGLDestroyPixelFormat(m_glFormat);
-
+
if ( m_dummyContext )
WXGLDestroyContext(m_dummyContext);
}
+bool wxGLCanvas::SwapBuffers()
+{
+ WXGLContext context = WXGLGetCurrentContext();
+ wxCHECK_MSG(context, false, wxT("should have current context"));
+
+ aglSwapBuffers(context);
+ return true;
+}
+
void wxGLCanvas::SetViewport()
{
if ( !m_needsUpdate )