From 2668cdc44f58ab79f0c502899617b057d5f7a919 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 31 Mar 2016 12:26:43 -0400 Subject: [PATCH] Fix up some mismerges and get the OpenGL code to compile again. --- Sources/Engine/Graphics/Gfx_OpenGL.cpp | 72 ++----------------- Sources/Engine/Graphics/SDL/SDLOpenGL.cpp | 16 ++--- Sources/Engine/Graphics/Win32/Win32OpenGL.cpp | 42 ++++++----- 3 files changed, 31 insertions(+), 99 deletions(-) diff --git a/Sources/Engine/Graphics/Gfx_OpenGL.cpp b/Sources/Engine/Graphics/Gfx_OpenGL.cpp index 78ef9c1..757eea4 100644 --- a/Sources/Engine/Graphics/Gfx_OpenGL.cpp +++ b/Sources/Engine/Graphics/Gfx_OpenGL.cpp @@ -16,6 +16,7 @@ #include +BOOL _TBCapability = FALSE; extern INDEX ogl_iTBufferEffect; extern INDEX ogl_iTBufferSamples; @@ -329,7 +330,6 @@ void CGfxLibrary::InitContext_OGL(void) OGL_CHECKERROR; } -#ifdef PLATFORM_WIN32 // if T-buffer is supported if( _TBCapability) { // add extension and disable t-buffer usage by default @@ -337,7 +337,6 @@ void CGfxLibrary::InitContext_OGL(void) pglDisable( GL_MULTISAMPLE_3DFX); OGL_CHECKERROR; } -#endif // test for clamp to edge TestExtension_OGL( GLF_EXT_EDGECLAMP, "GL_EXT_texture_edge_clamp"); @@ -440,69 +439,6 @@ void CGfxLibrary::InitContext_OGL(void) if( shd_bCacheAll) CacheShadows(); } - -// initialize OpenGL driver -BOOL CGfxLibrary::InitDriver_OGL( BOOL b3Dfx/*=FALSE*/) -{ - ASSERT( gl_hiDriver==NONE); - UINT iOldErrorMode = SetErrorMode( SEM_NOOPENFILEERRORBOX|SEM_FAILCRITICALERRORS); - CTString strDriverFileName = b3Dfx ? "3DFXVGL.DLL" : "OPENGL32.DLL"; - - try - { // if driver doesn't exists on disk - char strBuffer[_MAX_PATH+1]; - char *strDummy; - int iRes = SearchPathA( NULL, strDriverFileName, NULL, _MAX_PATH, strBuffer, &strDummy); - if( iRes==0) ThrowF_t(TRANS("OpenGL driver '%s' not present"), strDriverFileName); - - // load opengl library - gl_hiDriver = ::LoadLibraryA( strDriverFileName); - // if it cannot be loaded (although it is present on disk) - if( gl_hiDriver==NONE) { - // if it is 3dfx stand-alone driver - if( b3Dfx) { - // do a fatal error and inform user to deinstall it, - // since this loading attempt probably messed up the entire system - FatalError(TRANS( "3Dfx OpenGL driver '%s' is installed, but cannot be loaded!\n" - "If you previously had a 3Dfx card and it was removed,\n" - "please deinstall the driver and restart windows before\n" - "continuing.\n"), strDriverFileName); - } // fail! - ThrowF_t(TRANS("Cannot load OpenGL driver '%s'"), strDriverFileName); - } - // prepare functions - OGL_SetFunctionPointers_t(gl_hiDriver); - } - catch( char *strError) - { // didn't make it :( - if( gl_hiDriver!=NONE) FreeLibrary(gl_hiDriver); - gl_hiDriver = NONE; - CPrintF( TRANS("Error starting OpenGL: %s\n"), strError); - SetErrorMode(iOldErrorMode); - return FALSE; - } - - // revert to old error mode - SetErrorMode(iOldErrorMode); - - // if default driver - if( !b3Dfx) { - // use GDI functions - pwglSwapBuffers = ::SwapBuffers; - pwglSetPixelFormat = ::SetPixelFormat; - pwglChoosePixelFormat = ::ChoosePixelFormat; - // NOTE: - // some ICD implementations are not infact in OPENGL32.DLL, but in some - // other installed DLL, which is loaded when original OPENGL32.DLL from MS is - // loaded. For those, we in fact load OPENGL32.DLL from MS, so we must _not_ - // call these functions directly, because they are in MS dll. We must call - // functions from GDI, which in turn call either OPENGL32.DLL, _or_ the client driver, - // as appropriate. - } - // done - return TRUE; -} - static void ClearFunctionPointers(void) { // clear gl function pointers @@ -526,6 +462,10 @@ void CGfxLibrary::EndDriver_OGL(void) gfxDeleteTexture( _fog_ulTexture); gfxDeleteTexture( _haze_ulTexture); + ASSERT( _ptdFlat!=NULL); + _ptdFlat->td_tpLocal.Clear(); + _ptdFlat->Unbind(); + PlatformEndDriver_OGL(); ClearFunctionPointers(); } @@ -535,8 +475,6 @@ void CGfxLibrary::EndDriver_OGL(void) /* * 3dfx t-buffer control */ - - extern void SetTBufferEffect( BOOL bEnable) { // adjust console vars diff --git a/Sources/Engine/Graphics/SDL/SDLOpenGL.cpp b/Sources/Engine/Graphics/SDL/SDLOpenGL.cpp index 47d4617..dca445c 100644 --- a/Sources/Engine/Graphics/SDL/SDLOpenGL.cpp +++ b/Sources/Engine/Graphics/SDL/SDLOpenGL.cpp @@ -7,7 +7,7 @@ static void FailFunction_t(const char *strName) { ThrowF_t(TRANS("Required function %s not found."), strName); } -static void SetFunctionPointers_t(HINSTANCE hiOGL) +static void OGL_SetFunctionPointers_t(HINSTANCE hiOGL) { const char *strName; // get gl function pointers @@ -26,24 +26,20 @@ BOOL CGfxLibrary::InitDriver_OGL(BOOL init3dfx) if (SDL_Init(SDL_INIT_VIDEO) == -1) { CPrintF( TRANS("Error starting OpenGL: %s\n"), SDL_GetError()); - return(FALSE); + return FALSE; } SDL_EnableUNICODE(1); SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); - // !!! FIXME: Is it safe to add new cvars for a specific platform? - const char *envlib = getenv("SERIOUS_GLLIBRARY"); - CTString strDriverFileName = ((envlib) ? envlib : "libGL.so.1"); - - if (SDL_GL_LoadLibrary(strDriverFileName) == -1) { - CPrintF(TRANSV("Cannot load OpenGL driver '%s'"), (const char *) strDriverFileName); + if (SDL_GL_LoadLibrary(NULL) == -1) { + CPrintF(TRANSV("Cannot load OpenGL driver")); SDL_QuitSubSystem(SDL_INIT_VIDEO); - return(FALSE); + return FALSE; } // prepare functions - SetFunctionPointers_t(gl_hiDriver); + OGL_SetFunctionPointers_t(gl_hiDriver); // done return TRUE; diff --git a/Sources/Engine/Graphics/Win32/Win32OpenGL.cpp b/Sources/Engine/Graphics/Win32/Win32OpenGL.cpp index bf638cd..2ecf9d3 100644 --- a/Sources/Engine/Graphics/Win32/Win32OpenGL.cpp +++ b/Sources/Engine/Graphics/Win32/Win32OpenGL.cpp @@ -15,7 +15,7 @@ void WIN_CheckError(BOOL bRes, const char *strDescription) } -static void SetFunctionPointers_t(HINSTANCE hiOGL) +static void OGL_SetFunctionPointers_t(HINSTANCE hiOGL) { const char *strName; // get gl function pointers @@ -40,11 +40,11 @@ BOOL CGfxLibrary::InitDriver_OGL( BOOL b3Dfx/*=FALSE*/) { // if driver doesn't exists on disk char strBuffer[_MAX_PATH+1]; char *strDummy; - int iRes = SearchPath( NULL, strDriverFileName, NULL, _MAX_PATH, strBuffer, &strDummy); + int iRes = SearchPathA( NULL, strDriverFileName, NULL, _MAX_PATH, strBuffer, &strDummy); if( iRes==0) ThrowF_t(TRANS("OpenGL driver '%s' not present"), strDriverFileName); // load opengl library - gl_hiDriver = ::LoadLibrary( strDriverFileName); + gl_hiDriver = ::LoadLibraryA( strDriverFileName); // if it cannot be loaded (although it is present on disk) if( gl_hiDriver==NONE) { @@ -60,7 +60,7 @@ BOOL CGfxLibrary::InitDriver_OGL( BOOL b3Dfx/*=FALSE*/) ThrowF_t(TRANS("Cannot load OpenGL driver '%s'"), (const char *) strDriverFileName); } // prepare functions - SetFunctionPointers_t(gl_hiDriver); + OGL_SetFunctionPointers_t(gl_hiDriver); } catch( char *strError) { // didn't make it :( @@ -131,11 +131,12 @@ BOOL CGfxLibrary::CreateContext_OGL(HDC hdc) pwglDeleteContext( hglrc); \ ReleaseDC( dummyhwnd, hdc); \ DestroyWindow( dummyhwnd); \ - UnregisterClass( classname, hInstance) + UnregisterClassA( classname, hInstance); - // helper for choosing t-buffer's pixel format -static _TBCapability = FALSE; + +// helper for choosing t-buffer's pixel format +extern BOOL _TBCapability; static INDEX ChoosePixelFormatTB( HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd, PIX pixResWidth, PIX pixResHeight) { @@ -144,9 +145,9 @@ static INDEX ChoosePixelFormatTB( HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd, char *wglextensions = NULL; HGLRC hglrc; HWND dummyhwnd; - WNDCLASS cls; + WNDCLASSA cls; HINSTANCE hInstance = GetModuleHandle(NULL); - char *classname = "dummyOGLwin"; + LPCSTR classname = "dummyOGLwin"; cls.style = CS_OWNDC; cls.lpfnWndProc = DefWindowProc; cls.cbClsExtra = 0; @@ -158,16 +159,16 @@ static INDEX ChoosePixelFormatTB( HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd, cls.lpszMenuName = NULL; cls.lpszClassName = classname; // didn't manage to register class? - if( !RegisterClass(&cls)) return 0; + if( !RegisterClassA(&cls)) return 0; // create window fullscreen //CPrintF( " Dummy window: %d x %d\n", pixResWidth, pixResHeight); - dummyhwnd = CreateWindowEx( WS_EX_TOPMOST, classname, "Dummy OGL window", + dummyhwnd = CreateWindowExA( WS_EX_TOPMOST, classname, "Dummy OGL window", WS_POPUP|WS_VISIBLE, 0, 0, pixResWidth, pixResHeight, NULL, NULL, hInstance, NULL); // didn't make it? if( dummyhwnd == NULL) { - UnregisterClass( classname, hInstance); + UnregisterClassA( classname, hInstance); return 0; } //CPrintF( " Dummy passed...\n"); @@ -177,7 +178,7 @@ static INDEX ChoosePixelFormatTB( HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd, if( !iPixelFormat) { ReleaseDC( dummyhwnd, hdc); DestroyWindow(dummyhwnd); - UnregisterClass( classname, hInstance); + UnregisterClassA( classname, hInstance); return 0; } //CPrintF( " Choose pixel format passed...\n"); @@ -185,7 +186,7 @@ static INDEX ChoosePixelFormatTB( HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd, if( !pwglSetPixelFormat( hdc, iPixelFormat, ppfd)) { ReleaseDC( dummyhwnd, hdc); DestroyWindow(dummyhwnd); - UnregisterClass( classname, hInstance); + UnregisterClassA( classname, hInstance); return 0; } //CPrintF( " Set pixel format passed...\n"); @@ -193,7 +194,6 @@ static INDEX ChoosePixelFormatTB( HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd, // create context using the default accelerated pixelformat that was passed hglrc = pwglCreateContext(hdc); pwglMakeCurrent( hdc, hglrc); - // update the value list with information passed from the ppfd. aiAttribList[ 9] = ppfd->cColorBits; aiAttribList[11] = ppfd->cDepthBits; @@ -206,7 +206,7 @@ static INDEX ChoosePixelFormatTB( HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd, { // windows extension string supported pwglGetExtensionsStringARB = (char* (__stdcall*)(HDC))pwglGetProcAddress( "wglGetExtensionsStringARB"); if( pwglGetExtensionsStringARB == NULL) { - BACKOFF; + BACKOFF return 0; } //CPrintF( " WGL extension string passed...\n"); @@ -214,7 +214,7 @@ static INDEX ChoosePixelFormatTB( HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd, wglextensions = (char*)pwglGetExtensionsStringARB(hdc); } else { - BACKOFF; + BACKOFF return 0; } @@ -227,7 +227,7 @@ static INDEX ChoosePixelFormatTB( HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd, pwglGetPixelFormatAttribivARB = (BOOL (__stdcall*)(HDC,int,int,UINT,int*,int*) )pwglGetProcAddress( "wglGetPixelFormatAttribivARB"); pglTBufferMask3DFX = (void (__stdcall*)(GLuint))pwglGetProcAddress("glTBufferMask3DFX"); if( pwglChoosePixelFormatARB==NULL && pglTBufferMask3DFX==NULL) { - BACKOFF; + BACKOFF return 0; } //CPrintF( " WGL choose pixel format present...\n"); @@ -243,7 +243,7 @@ static INDEX ChoosePixelFormatTB( HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd, // try to get all formats that fit the pixel format criteria if( !pwglChoosePixelFormatARB( hdc, piAttribList, NULL, iMaxFormats, piFormats, &uiNumFormats)) { FreeMemory(piFormats); - BACKOFF; + BACKOFF return 0; } //CPrintF( " WGL choose pixel format passed...\n"); @@ -260,11 +260,10 @@ static INDEX ChoosePixelFormatTB( HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd, { // wglChoosePixelFormatARB extension does not exist :( iPixelFormat = 0; } - BACKOFF; + BACKOFF return iPixelFormat; } - void *CGfxLibrary::OGL_GetProcAddress(const char *procname) { return(pwglGetProcAddress(procname)); @@ -439,4 +438,3 @@ BOOL CGfxLibrary::SetCurrentViewport_OGL(CViewPort *pvp) return TRUE; } -