예제 #1
0
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;
}
예제 #2
0
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;
}
예제 #3
0
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;
}