void COpenGL::DeInitialize() { initDone = false; SetShaders(NULL); DestroyDrawSurface(); wglMakeCurrent(NULL,NULL); if(hRC) { wglDeleteContext(hRC); hRC = NULL; } if(hDC) { ReleaseDC(hWnd,hDC); hDC = NULL; } hWnd = NULL; initDone = false; quadTextureSize = 0; filterScale = 0; afterRenderWidth = 0; afterRenderHeight = 0; shaderFunctionsLoaded = false; shader_type = OGL_SHADER_NONE; if(cgShader) { delete cgShader; cgShader = NULL; } if(cgAvailable) unloadCgLibrary(); cgAvailable = false; }
void CDirect3D::DeInitialize() { DestroyDrawSurface(); SetShader(NULL); if(cgShader) { delete cgShader; cgShader = NULL; } if(cgContext) { cgDestroyContext(cgContext); cgContext = NULL; } if(cgAvailable) cgD3D9SetDevice(NULL); if(vertexBuffer) { vertexBuffer->Release(); vertexBuffer = NULL; } if(vertexDeclaration) { vertexDeclaration->Release(); vertexDeclaration = NULL; } if( pDevice ) { pDevice->Release(); pDevice = NULL; } if( pD3D ) { pD3D->Release(); pD3D = NULL; } init_done = false; afterRenderWidth = 0; afterRenderHeight = 0; quadTextureSize = 0; fullscreen = false; filterScale = 0; if(cgAvailable) unloadCgLibrary(); cgAvailable = false; }
bool loadCgFunctions() { if(hCgDll && hCgD3D9Dll && hCgGLDll) return true; hCgDll = LoadLibrary(TEXT("cg.dll")); if(hCgDll) { hCgD3D9Dll = LoadLibrary(TEXT("cgD3D9.dll")); hCgGLDll = LoadLibrary(TEXT("cgGL.dll")); } if(!hCgDll || !hCgD3D9Dll || !hCgGLDll) { unloadCgLibrary(); return false; } //cg.dll cgCreateContext = (CGCC)GetProcAddress(hCgDll,"cgCreateContext"); cgDestroyContext = (CGDC)GetProcAddress(hCgDll,"cgDestroyContext"); cgGetNamedParameter = (CGGNP)GetProcAddress(hCgDll,"cgGetNamedParameter"); cgGetError = (CGGE)GetProcAddress(hCgDll,"cgGetError"); cgGetErrorString = (CGGES)GetProcAddress(hCgDll,"cgGetErrorString"); cgGetLastListing = (CGGLL)GetProcAddress(hCgDll,"cgGetLastListing"); cgCreateProgram = (CGCP)GetProcAddress(hCgDll,"cgCreateProgram"); cgDestroyProgram = (CGDP)GetProcAddress(hCgDll,"cgDestroyProgram"); //cgD3D9.dll cgD3D9SetDevice = (CGD3DSD)GetProcAddress(hCgD3D9Dll,"cgD3D9SetDevice"); cgD3D9BindProgram = (CGD3DBP)GetProcAddress(hCgD3D9Dll,"cgD3D9BindProgram"); cgD3D9GetLatestVertexProfile = (CGD3DGLVP)GetProcAddress(hCgD3D9Dll,"cgD3D9GetLatestVertexProfile"); cgD3D9GetLatestPixelProfile = (CGD3DGLPP)GetProcAddress(hCgD3D9Dll,"cgD3D9GetLatestPixelProfile"); cgD3D9GetOptimalOptions = (CGD3DGOO)GetProcAddress(hCgD3D9Dll,"cgD3D9GetOptimalOptions"); cgD3D9LoadProgram = (CGD3DLP)GetProcAddress(hCgD3D9Dll,"cgD3D9LoadProgram"); cgD3D9SetUniformMatrix = (CGD3DSUM)GetProcAddress(hCgD3D9Dll,"cgD3D9SetUniformMatrix"); cgD3D9SetUniform = (CGD3DSU)GetProcAddress(hCgD3D9Dll,"cgD3D9SetUniform"); //cggl.dll cgGLSetStateMatrixParameter = (CGGLSSMP)GetProcAddress(hCgGLDll,"cgGLSetStateMatrixParameter"); cgGLSetParameter2fv = (CGGLSP2FV)GetProcAddress(hCgGLDll,"cgGLSetParameter2fv"); cgGLGetLatestProfile = (CGGLGLP)GetProcAddress(hCgGLDll,"cgGLGetLatestProfile"); cgGLEnableProfile = (CGGLEP)GetProcAddress(hCgGLDll,"cgGLEnableProfile"); cgGLDisableProfile = (CGGLDP)GetProcAddress(hCgGLDll,"cgGLDisableProfile"); cgGLSetOptimalOptions = (CGGLSOO)GetProcAddress(hCgGLDll,"cgGLSetOptimalOptions"); cgGLLoadProgram = (CGGLLP)GetProcAddress(hCgGLDll,"cgGLLoadProgram"); cgGLBindProgram = (CGGLBP)GetProcAddress(hCgGLDll,"cgGLBindProgram"); if( //cg.dll !cgCreateContext || !cgDestroyContext || !cgGetNamedParameter || !cgGetError || !cgGetErrorString || !cgGetLastListing || !cgCreateProgram || !cgDestroyProgram || //cgD3D9.dll !cgD3D9SetDevice || !cgD3D9BindProgram || !cgD3D9GetLatestVertexProfile || !cgD3D9GetLatestPixelProfile || !cgD3D9GetOptimalOptions || !cgD3D9LoadProgram || !cgD3D9SetUniformMatrix || !cgD3D9SetUniform || //cggl.dll !cgGLSetStateMatrixParameter || !cgGLSetParameter2fv || !cgGLGetLatestProfile || !cgGLEnableProfile || !cgGLDisableProfile || !cgGLSetOptimalOptions || !cgGLLoadProgram || !cgGLBindProgram) { unloadCgLibrary(); return false; } return true; }