X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=glimports.hpp;h=65b0aca1f2977e9ca534830d8eac982918080dec;hb=dfa23ba3320555bb32ee964e20f83d498132bcb7;hp=5e8993816a99274c3777784729d6297bd69932b3;hpb=97297cb9e8314e7e5d384518b1fd428f1b3f1ff7;p=apitrace diff --git a/glimports.hpp b/glimports.hpp index 5e89938..65b0aca 100644 --- a/glimports.hpp +++ b/glimports.hpp @@ -30,34 +30,58 @@ #ifndef _GLIMPORTS_HPP_ #define _GLIMPORTS_HPP_ -#ifdef _WIN32 + +// Prevent including system's glext.h +#define __glext_h_ + + +// Some functions take GLenum disguised as GLint. Apple noticed and fixed it +// in the Mac OS X 10.6.x gl.h headers. Regardless, C++ typechecking rules +// force the wrappers to match the prototype precisely. +#if defined(__APPLE__) +# include // for MAC_OS_X_VERSION_10_7 +# if defined(MAC_OS_X_VERSION_10_7) +# define GLenum_int GLint +# else +# define GLenum_int GLenum +# endif +#else +# define GLenum_int GLint +#endif + + +#if defined(_WIN32) #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN 1 #endif #include +#include + +#elif defined(__APPLE__) -#else /* !_WIN32 */ +#include + +#else #include +#include #endif /* !_WIN32 */ -// Prevent including system's glext.h -#define __glext_h_ - -#include +// Include our own glext.h #undef __glext_h_ - #include "glext/glext.h" + #ifndef GL_TEXTURE_INDEX_SIZE_EXT #define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED #endif -#ifdef _WIN32 + +#if defined(_WIN32) #include "glext/wglext.h" @@ -83,14 +107,43 @@ typedef struct _WGLSWAP #endif /* !WGL_SWAPMULTIPLE_MAX */ -#else /* !_WIN32 */ +#elif defined(__APPLE__) + +#include +#include +#include + +#ifndef CGL_VERSION_1_3 +#define kCGLPFAOpenGLProfile 99 +#define kCGLOGLPVersion_Legacy 0x1000 +#define kCGLOGLPVersion_3_2_Core 0x3200 +#endif + +extern "C" { + +// From http://www.opensource.apple.com/source/gdb/gdb-954/libcheckpoint/cpcg.c +typedef void * CGSConnectionID; +typedef int CGSWindowID; +typedef int CGSSurfaceID; + +CGLError CGLSetSurface(CGLContextObj ctx, CGSConnectionID cid, CGSWindowID wid, CGSSurfaceID sid); +CGLError CGLGetSurface(CGLContextObj ctx, CGSConnectionID* cid, CGSWindowID* wid, CGSSurfaceID* sid); +CGLError CGLUpdateContext(CGLContextObj ctx); + +} + +#else #include #include "glext/glxext.h" -/* Prevent collision with Trace::Bool */ +/* Prevent collision with trace::Bool */ #undef Bool -#endif /* !_WIN32 */ +#endif + + +#include "eglimports.hpp" + #endif /* _GLIMPORTS_HPP_ */