void SetD3DResourcePrivateData(LPDIRECT3DRESOURCE9 res, const char* FName) { #if R3D_SET_DEBUG_D3D_NAMES DWORD sz = strlen(FName); res->SetPrivateData(WKPDID_D3DDebugObjectName, FName, sz, 0); void* p = 0; res->QueryInterface(IID_IDirect3DTexture9, &p); if(p) { LPDIRECT3DTEXTURE9 t = (LPDIRECT3DTEXTURE9)p; int mipsCount = t->GetLevelCount(); for (int i = 0; i < mipsCount; ++i) { LPDIRECT3DSURFACE9 surf; t->GetSurfaceLevel(i, &surf); surf->SetPrivateData(WKPDID_D3DDebugObjectName, FName, sz, 0); surf->Release(); } t->Release(); return; } p = 0; res->QueryInterface(IID_IDirect3DCubeTexture9, &p); if(p) { LPDIRECT3DCUBETEXTURE9 t = (LPDIRECT3DCUBETEXTURE9)p; int mipsCount = t->GetLevelCount(); for (int i = 0; i < mipsCount; ++i) { for (int j = D3DCUBEMAP_FACE_POSITIVE_X; j <= D3DCUBEMAP_FACE_NEGATIVE_Z; ++j) { LPDIRECT3DSURFACE9 surf; t->GetCubeMapSurface((D3DCUBEMAP_FACES)j, i, &surf); surf->SetPrivateData(WKPDID_D3DDebugObjectName, FName, sz, 0); surf->Release(); } } t->Release(); return; } #endif }
void Cleanup() { // 폰트를 release 한다. if (gpFont) { gpFont->Release(); gpFont = NULL; } // 모델을 release 한다. if (gpTeapot) { gpTeapot->Release(); gpTeapot = NULL; } // 쉐이더를 release 한다. if (gpEnvironmentMappingShader) { gpEnvironmentMappingShader->Release(); gpEnvironmentMappingShader = NULL; } // 텍스처를 release 한다. if (gpStoneDM) { gpStoneDM->Release(); gpStoneDM = NULL; } if (gpStoneSM) { gpStoneSM->Release(); gpStoneSM = NULL; } if (gpStoneNM) { gpStoneNM->Release(); gpStoneNM = NULL; } if (gpSnowENV) { gpSnowENV->Release(); gpSnowENV = NULL; } // D3D를 release 한다. if (gpD3DDevice) { gpD3DDevice->Release(); gpD3DDevice = NULL; } if (gpD3D) { gpD3D->Release(); gpD3D = NULL; } }
void Cleanup() { // release fonts if (gpFont) { gpFont->Release(); gpFont = NULL; } // release models if (gpTeapot) { gpTeapot->Release(); gpTeapot = NULL; } // release shaders if (gpEnvironmentMappingShader) { gpEnvironmentMappingShader->Release(); gpEnvironmentMappingShader = NULL; } if (gpNoEffect) { gpNoEffect->Release(); gpNoEffect = NULL; } if (gpGrayScale) { gpGrayScale->Release(); gpGrayScale = NULL; } if (gpSepia) { gpSepia->Release(); gpSepia = NULL; } // release textures if (gpStoneDM) { gpStoneDM->Release(); gpStoneDM = NULL; } if (gpStoneSM) { gpStoneSM->Release(); gpStoneSM = NULL; } if (gpStoneNM) { gpStoneNM->Release(); gpStoneNM = NULL; } if (gpSnowENV) { gpSnowENV->Release(); gpSnowENV = NULL; } // Release the fullscreen quad if (gpFullscreenQuadDecl) { gpFullscreenQuadDecl->Release(); gpFullscreenQuadDecl = NULL; } if (gpFullscreenQuadVB) { gpFullscreenQuadVB->Release(); gpFullscreenQuadVB = NULL; } if (gpFullscreenQuadIB) { gpFullscreenQuadIB->Release(); gpFullscreenQuadIB = NULL; } // release the render target if (gpSceneRenderTarget) { gpSceneRenderTarget->Release(); gpSceneRenderTarget = NULL; } // release D3D if (gpD3DDevice) { gpD3DDevice->Release(); gpD3DDevice = NULL; } if (gpD3D) { gpD3D->Release(); gpD3D = NULL; } }