diff --git a/docs/latex/wx/glcanvas.tex b/docs/latex/wx/glcanvas.tex index 8c5b4d66e1..f0cbc168c6 100644 --- a/docs/latex/wx/glcanvas.tex +++ b/docs/latex/wx/glcanvas.tex @@ -63,6 +63,7 @@ alpha channel, and accum buffer. Other implementations may support them. \latexignore{\rtfignore{\wxheading{Members}}} + \membersection{wxGLCanvas::wxGLCanvas}\label{wxglcanvasconstr} \func{void}{wxGLCanvas}{\param{wxWindow* }{parent}, \param{wxWindowID}{ id = -1}, \param{const wxPoint\&}{ pos}, @@ -110,12 +111,14 @@ and so on. \docparam{palette}{If the window has the palette, it should by pass this value. Note: palette and WX\_GL\_RGBA are mutually exclusive.} + \membersection{wxGLCanvas::GetContext}\label{wxglcanvasgetcontext} \func{wxGLContext*}{GetContext}{\void} Obtains the context that is associated with this canvas. + \membersection{wxGLCanvas::SetCurrent}\label{wxglcanvassetcurrent} \func{void}{SetCurrent}{\void} @@ -125,12 +128,16 @@ Each canvas contains an OpenGL device context that has been created during the creation of this window. So this call sets the current device context as the target device context for OpenGL operations. +Note that this function may only be called after the window has been shown. + + \membersection{wxGLCanvas::SetColour}\label{wxglcanvassetcolour} \func{void}{SetColour}{\param{const char*}{ colour}} Sets the current colour for this window, using the wxWidgets colour database to find a named colour. + \membersection{wxGLCanvas::SwapBuffers}\label{wxglcanvasswapbuffers} \func{void}{SwapBuffers}{\void} diff --git a/src/msw/glcanvas.cpp b/src/msw/glcanvas.cpp index 21e44ab4b5..d0867503fa 100644 --- a/src/msw/glcanvas.cpp +++ b/src/msw/glcanvas.cpp @@ -243,11 +243,6 @@ void wxGLContext::SetCurrent() { wglMakeCurrent((HDC) m_hDC, m_glContext); } - - /* - setupPixelFormat(hDC); - setupPalette(hDC); - */ } void wxGLContext::SetColour(const wxChar *colour) @@ -586,6 +581,12 @@ void wxGLCanvas::OnSize(wxSizeEvent& WXUNUSED(event)) void wxGLCanvas::SetCurrent() { + // although on MSW it works even if the window is still hidden, it doesn't + // under wxGTK and documentation mentions that SetCurrent() can only be + // called for a shown window, so check it + wxASSERT_MSG( GetParent()->IsShown(), + _T("can't make hidden GL canvas current") ); + if (m_glContext) { m_glContext->SetCurrent();