// Modified by:
// Created:
// Copyright: (c) Julian Smart
-// RCS-ID: $Id$
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
WX_GL_MIN_ACCUM_RED, // use red accum buffer with most bits (> MIN_ACCUM_RED bits)
WX_GL_MIN_ACCUM_GREEN, // use green buffer with most bits (> MIN_ACCUM_GREEN bits)
WX_GL_MIN_ACCUM_BLUE, // use blue buffer with most bits (> MIN_ACCUM_BLUE bits)
- WX_GL_MIN_ACCUM_ALPHA // use alpha buffer with most bits (> MIN_ACCUM_ALPHA bits)
+ WX_GL_MIN_ACCUM_ALPHA, // use alpha buffer with most bits (> MIN_ACCUM_ALPHA bits)
+ WX_GL_SAMPLE_BUFFERS, // 1 for multisampling support (antialiasing)
+ WX_GL_SAMPLES // 4 for 2x2 antialiasing supersampling on most graphics cards
};
-#define wxGLCanvasName _T("GLCanvas")
+#define wxGLCanvasName wxT("GLCanvas")
// ----------------------------------------------------------------------------
// wxGLContextBase: OpenGL rendering context
// check if the given attributes are supported without creating a canvas
static bool IsDisplaySupported(const int *attribList);
+#if wxUSE_PALETTE
const wxPalette *GetPalette() const { return &m_palette; }
+#endif // wxUSE_PALETTE
// miscellaneous helper functions
// ------------------------------
// colour not found
bool SetColour(const wxString& colour);
-
+ // return true if the extension with given name is supported
+ //
+ // notice that while this function is implemented for all of GLX, WGL and
+ // AGL the extensions names are usually not the same for different
+ // platforms and so the code using it still usually uses conditional
+ // compilation
+ static bool IsExtensionSupported(const char *extension);
// deprecated methods using the implicit wxGLContext
#if WXWIN_COMPATIBILITY_2_8
#ifdef __WXUNIVERSAL__
// resolve the conflict with wxWindowUniv::SetCurrent()
- virtual bool SetCurrent(bool doit) { return wxWindow::SetCurrent(doit); };
+ virtual bool SetCurrent(bool doit) { return wxWindow::SetCurrent(doit); }
#endif
protected:
// (currently only implemented in wxX11 and wxMotif ports)
virtual int GetColourIndex(const wxColour& WXUNUSED(col)) { return -1; }
+ // check if the given extension name is present in the space-separated list
+ // of extensions supported by the current implementation such as returned
+ // by glXQueryExtensionsString() or glGetString(GL_EXTENSIONS)
+ static bool IsExtensionInList(const char *list, const char *extension);
+
+#if wxUSE_PALETTE
// create default palette if we're not using RGBA mode
// (not supported in most ports)
virtual wxPalette CreateDefaultPalette() { return wxNullPalette; }
-
wxPalette m_palette;
+#endif // wxUSE_PALETTE
#if WXWIN_COMPATIBILITY_2_8
wxGLContext *m_glContext;
#elif defined(__WXGTK__)
#include "wx/gtk1/glcanvas.h"
#elif defined(__WXMAC__)
- #include "wx/mac/glcanvas.h"
+ #include "wx/osx/glcanvas.h"
#elif defined(__WXCOCOA__)
#include "wx/cocoa/glcanvas.h"
#else
#endif // !wxGL_APP_DEFINED
+// ----------------------------------------------------------------------------
+// wxGLAPI: an API wrapper that allows the use of 'old' APIs even on OpenGL
+// platforms that don't support it natively anymore, if the APIs are available
+// it's a mere redirect
+// ----------------------------------------------------------------------------
+
+#ifndef wxUSE_OPENGL_EMULATION
+ #define wxUSE_OPENGL_EMULATION 0
+#endif
+
+class WXDLLIMPEXP_GL wxGLAPI : public wxObject
+{
+public:
+ wxGLAPI();
+ ~wxGLAPI();
+
+ static void glFrustum(GLfloat left, GLfloat right, GLfloat bottom,
+ GLfloat top, GLfloat zNear, GLfloat zFar);
+ static void glBegin(GLenum mode);
+ static void glTexCoord2f(GLfloat s, GLfloat t);
+ static void glVertex3f(GLfloat x, GLfloat y, GLfloat z);
+ static void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz);
+ static void glColor4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a);
+ static void glColor3f(GLfloat r, GLfloat g, GLfloat b);
+ static void glEnd();
+};
+
#endif // wxUSE_GLCANVAS
#endif // _WX_GLCANVAS_H_BASE_