From 72f35dc9143bbe4c009df4ee4ed7c76c9db07c21 Mon Sep 17 00:00:00 2001 From: ehofman Date: Tue, 1 Feb 2005 10:35:43 +0000 Subject: [PATCH] Comment out GLX code for MacOS and (hopefully) add some MacOS AGL compattible code. More needs to be done though. --- simgear/screen/RenderTexture.cpp | 71 ++++++++++++++++++++++++++++---- simgear/screen/RenderTexture.h | 2 + 2 files changed, 64 insertions(+), 9 deletions(-) diff --git a/simgear/screen/RenderTexture.cpp b/simgear/screen/RenderTexture.cpp index 666b8445..d31a61e6 100644 --- a/simgear/screen/RenderTexture.cpp +++ b/simgear/screen/RenderTexture.cpp @@ -122,6 +122,7 @@ RenderTexture::RenderTexture(const char *strMode) _hPBuffer(NULL), _hPreviousDC(0), _hPreviousContext(0), +#elif defined( __APPLE__ ) #else _pDisplay(NULL), _hGLContext(NULL), @@ -145,6 +146,7 @@ RenderTexture::RenderTexture(const char *strMode) _pbufferAttribs.push_back(WGL_PBUFFER_LARGEST_ARB); _pbufferAttribs.push_back(true); +#elif defined( __APPLE__ ) #else _pbufferAttribs.push_back(GLX_RENDER_TYPE_SGIX); _pbufferAttribs.push_back(GLX_RGBA_BIT_SGIX); @@ -440,6 +442,7 @@ bool RenderTexture::Initialize(int width, int height, fprintf(stderr, "\n"); #endif +#elif defined( __APPLE__ ) #else // !_WIN32 _pDisplay = glXGetCurrentDisplay(); GLXContext context = glXGetCurrentContext(); @@ -521,6 +524,7 @@ bool RenderTexture::Initialize(int width, int height, _wglGetLastError(); return false; } +#elif defined( __APPLE__ ) #else _hPreviousContext = glXGetCurrentContext(); _hPreviousDrawable = glXGetCurrentDrawable(); @@ -545,6 +549,7 @@ bool RenderTexture::Initialize(int width, int height, _wglGetLastError(); return false; } +#elif defined( __APPLE__ ) #else if (False == glXMakeCurrent(_pDisplay, _hPreviousDrawable, _hPreviousContext)) @@ -596,6 +601,7 @@ bool RenderTexture::_Invalidate() _hPBuffer = 0; return true; } +#elif defined( __APPLE__ ) #else if ( _hPBuffer ) { @@ -666,6 +672,7 @@ bool RenderTexture::Reset(const char *strMode, ...) _pbufferAttribs.push_back(WGL_PBUFFER_LARGEST_ARB); _pbufferAttribs.push_back(true); +#elif defined( __APPLE__ ) #else _pbufferAttribs.push_back(GLX_RENDER_TYPE_SGIX); _pbufferAttribs.push_back(GLX_RGBA_BIT_SGIX); @@ -735,6 +742,7 @@ bool RenderTexture::Resize(int iWidth, int iHeight) _hPBuffer = 0; return true; } +#elif defined( __APPLE__ ) #else if ( _hPBuffer ) { @@ -777,6 +785,7 @@ bool RenderTexture::BeginCapture() _hPreviousContext = wglGetCurrentContext(); if (NULL == _hPreviousContext) _wglGetLastError(); +#elif defined( __APPLE__ ) #else _hPreviousContext = glXGetCurrentContext(); _hPreviousDrawable = glXGetCurrentDrawable(); @@ -814,6 +823,7 @@ bool RenderTexture::EndCapture() _wglGetLastError(); return false; } +#elif defined( __APPLE__ ) #else if (False == glXMakeCurrent(_pDisplay, _hPreviousDrawable, _hPreviousContext)) @@ -883,6 +893,7 @@ bool RenderTexture::BeginCapture(RenderTexture* current) _hPreviousContext = current->_hPreviousContext; if (NULL == _hPreviousContext) _wglGetLastError(); +#elif defined( __APPLE__ ) #else _hPreviousContext = current->_hPreviousContext; _hPreviousDrawable = current->_hPreviousDrawable; @@ -1066,17 +1077,22 @@ void RenderTexture::_ParseModeString(const char *modeString, pfAttribs.push_back(bitVec[1]); pfAttribs.push_back(WGL_BLUE_BITS_ARB); pfAttribs.push_back(bitVec[2]); +#elif defined( __APPLE__ ) + pfAttribs.push_back(AGL_RED_SIZE); + pfAttribs.push_back(bitVec[0]); + pfAttribs.push_back(AGL_GREEN_SIZE); + pfAttribs.push_back(bitVec[1]); + pfAttribs.push_back(AGL_BLUE_SIZE); + pfAttribs.push_back(bitVec[2]); #else -# ifndef sgi pfAttribs.push_back(GLX_RED_SIZE); pfAttribs.push_back(bitVec[0]); pfAttribs.push_back(GLX_GREEN_SIZE); pfAttribs.push_back(bitVec[1]); pfAttribs.push_back(GLX_BLUE_SIZE); pfAttribs.push_back(bitVec[2]); -# endif #endif - _iNumComponents += 3; + _iNumComponents += 3; continue; } else if (kv.first == "rgb") @@ -1109,8 +1125,16 @@ void RenderTexture::_ParseModeString(const char *modeString, pfAttribs.push_back(bitVec[2]); pfAttribs.push_back(WGL_ALPHA_BITS_ARB); pfAttribs.push_back(bitVec[3]); +#elif defined( __APPLE__ ) + pfAttribs.push_back(AGL_RED_SIZE); + pfAttribs.push_back(bitVec[0]); + pfAttribs.push_back(AGL_GREEN_SIZE); + pfAttribs.push_back(bitVec[1]); + pfAttribs.push_back(AGL_BLUE_SIZE); + pfAttribs.push_back(bitVec[2]); + pfAttribs.push_back(AGL_ALPHA_SIZE); + pfAttribs.push_back(bitVec[3]); #else -# ifndef sgi pfAttribs.push_back(GLX_RED_SIZE); pfAttribs.push_back(bitVec[0]); pfAttribs.push_back(GLX_GREEN_SIZE); @@ -1119,9 +1143,8 @@ void RenderTexture::_ParseModeString(const char *modeString, pfAttribs.push_back(bitVec[2]); pfAttribs.push_back(GLX_ALPHA_SIZE); pfAttribs.push_back(bitVec[3]); -# endif #endif - _iNumComponents = 4; + _iNumComponents = 4; continue; } else if (kv.first == "rgba") @@ -1140,6 +1163,9 @@ void RenderTexture::_ParseModeString(const char *modeString, #ifdef _WIN32 pfAttribs.push_back(WGL_RED_BITS_ARB); pfAttribs.push_back(bitVec[0]); +#elif defined( __APPLE__ ) + pfAttribs.push_back(AGL_RED_SIZE); + pfAttribs.push_back(bitVec[0]); #else pfAttribs.push_back(GLX_RED_SIZE); pfAttribs.push_back(bitVec[0]); @@ -1170,6 +1196,11 @@ void RenderTexture::_ParseModeString(const char *modeString, pfAttribs.push_back(bitVec[0]); pfAttribs.push_back(WGL_GREEN_BITS_ARB); pfAttribs.push_back(bitVec[1]); +#elif defined( __APPLE__ ) + pfAttribs.push_back(AGL_RED_SIZE); + pfAttribs.push_back(bitVec[0]); + pfAttribs.push_back(AGL_GREEN_SIZE); + pfAttribs.push_back(bitVec[1]); #else pfAttribs.push_back(GLX_RED_SIZE); pfAttribs.push_back(bitVec[0]); @@ -1199,6 +1230,8 @@ void RenderTexture::_ParseModeString(const char *modeString, bHasStencil = true; #ifdef _WIN32 pfAttribs.push_back(WGL_STENCIL_BITS_ARB); +#elif defined( __APPLE__ ) + pfAttribs.push_back(AGL_STENCIL_SIZE); #else pfAttribs.push_back(GLX_STENCIL_SIZE); #endif @@ -1216,6 +1249,11 @@ void RenderTexture::_ParseModeString(const char *modeString, pfAttribs.push_back(1); pfAttribs.push_back(WGL_SAMPLES_ARB); pfAttribs.push_back(strtol(kv.second.c_str(), 0, 10)); +#elif defined( __APPLE__ ) + pfAttribs.push_back(AGL_SAMPLE_BUFFERS_ARB); + pfAttribs.push_back(1); + pfAttribs.push_back(AGL_SAMPLES_ARB); + pfAttribs.push_back(strtol(kv.second.c_str(), 0, 10)); #else pfAttribs.push_back(GL_SAMPLE_BUFFERS_ARB); pfAttribs.push_back(1); @@ -1231,6 +1269,9 @@ void RenderTexture::_ParseModeString(const char *modeString, #ifdef _WIN32 pfAttribs.push_back(WGL_DOUBLE_BUFFER_ARB); pfAttribs.push_back(true); +#elif defined( __APPLE__ ) + pfAttribs.push_back(AGL_DOUBLEBUFFER); + pfAttribs.push_back(True); #else pfAttribs.push_back(GL_DOUBLEBUFFER); pfAttribs.push_back(True); @@ -1242,6 +1283,8 @@ void RenderTexture::_ParseModeString(const char *modeString, { #ifdef _WIN32 pfAttribs.push_back(WGL_AUX_BUFFERS_ARB); +#elif defined( __APPLE__ ) + pfAttribs.push_back(AGL_AUX_BUFFERS); #else pfAttribs.push_back(GL_AUX_BUFFERS); #endif @@ -1349,6 +1392,8 @@ void RenderTexture::_ParseModeString(const char *modeString, #ifdef _WIN32 pfAttribs.push_back(WGL_DEPTH_BITS_ARB); +#elif defined( __APPLE__ ) + pfAttribs.push_back(AGL_DEPTH_SIZE); #else pfAttribs.push_back(GLX_DEPTH_SIZE); #endif @@ -1359,6 +1404,9 @@ void RenderTexture::_ParseModeString(const char *modeString, #ifdef _WIN32 pfAttribs.push_back(WGL_STENCIL_BITS_ARB); pfAttribs.push_back(0); +#elif defined( __APPLE__ ) + pfAttribs.push_back(AGL_STENCIL_SIZE); + pfAttribs.push_back(0); #else pfAttribs.push_back(GLX_STENCIL_SIZE); pfAttribs.push_back(0); @@ -1414,7 +1462,7 @@ void RenderTexture::_ParseModeString(const char *modeString, #elif defined(DEBUG) || defined(_DEBUG) printf("RenderTexture Error: Render to Texture not " - "supported in Linux\n"); + "supported in Linux or MacOS\n"); #endif } @@ -1435,6 +1483,7 @@ void RenderTexture::_ParseModeString(const char *modeString, pfAttribs.push_back(WGL_PIXEL_TYPE_ARB); pfAttribs.push_back(WGL_TYPE_RGBA_FLOAT_ATI); } +#elif defined( __APPLE__ ) #else if (GL_NV_float_buffer) { @@ -1548,7 +1597,7 @@ void RenderTexture::_ParseModeString(const char *modeString, #elif defined(DEBUG) || defined(_DEBUG) fprintf(stderr, "RenderTexture Error: Render to Texture not supported in " - "Linux\n"); + "Linux or MacOS\ n"); #endif } @@ -1573,7 +1622,7 @@ void RenderTexture::_ParseModeString(const char *modeString, } #elif defined(DEBUG) || defined(_DEBUG) printf("RenderTexture Error: Render to Texture not supported in " - "Linux\n"); + "Linux or MacOS\n"); #endif } } @@ -1720,6 +1769,7 @@ bool RenderTexture::_VerifyExtensions() } SetLastError(0); } +#elif defined( __APPLE__ ) #else if (!GLX_SGIX_pbuffer) { @@ -2042,6 +2092,7 @@ bool RenderTexture::_MakeCurrent() _wglGetLastError(); return false; } +#elif defined( __APPLE__ ) #else if (false == glXMakeCurrent(_pDisplay, _hPBuffer, _hGLContext)) { @@ -2093,6 +2144,7 @@ RenderTexture::RenderTexture(int width, int height, _hPBuffer(NULL), _hPreviousDC(0), _hPreviousContext(0), +#elif defined( __APPLE__ ) #else _pDisplay(NULL), _hGLContext(NULL), @@ -2209,6 +2261,7 @@ bool RenderTexture::Initialize(bool bShare /* = true */, _pbufferAttribs.push_back(WGL_PBUFFER_LARGEST_ARB); _pbufferAttribs.push_back(true); +#elif defined( __APPLE__ ) #else _pixelFormatAttribs.push_back(GLX_RENDER_TYPE_SGIX); _pixelFormatAttribs.push_back(GLX_RGBA_BIT_SGIX); diff --git a/simgear/screen/RenderTexture.h b/simgear/screen/RenderTexture.h index ad90bd31..c8377d11 100644 --- a/simgear/screen/RenderTexture.h +++ b/simgear/screen/RenderTexture.h @@ -337,6 +337,8 @@ protected: // data HDC _hPreviousDC; HGLRC _hPreviousContext; +#elif defined( __APPLE__ ) + #else Display *_pDisplay; GLXContext _hGLContext; -- 2.39.5