Exemple #1
0
void CD3DApp::DestroyD3DApp()
{
	g_uiWndWidth = 0;
	g_uiWndHeight = 0;
	m_wWndPosX = 0;
	m_wWndPosY = 0;
	m_bFullscreen = 0;
	m_liCountNum = 0;
	m_liLastCountNum = 0;
	m_bPaused = 1;

	m_hInst = 0; 
	g_hWnd = 0;
	g_uiWndWidth = 0;
	g_uiWndHeight = 0;

	ReleaseX(g_pSwapChain);
	ReleaseX(g_pD3DDevice);
	ReleaseX(m_pDinput);
	m_pKeyboard->Unacquire();
	ReleaseX(m_pKeyboard);
	m_pMouse->Unacquire();
	ReleaseX(m_pMouse);

	UnregisterClassW(m_szWndClassName, m_hInst);
	delete[] m_szWndClassName;
	m_szWndClassName = NULL;
	delete[] m_szWndTitleText;
	m_szWndTitleText = NULL;
}
Exemple #2
0
void CD3DApp::WindowResize()
{
	ID3D10RenderTargetView * pRTV[] = {NULL};
	g_pD3DDevice->OMSetRenderTargets(1, pRTV, NULL);

	ReleaseX(g_pRenderTargetView);
	ReleaseX(g_pDepthStencilView);
	//ReleaseX(g_pDepthSetncilBuffer);

	if (FAILED(g_pSwapChain->ResizeBuffers(1, g_uiWndWidth, g_uiWndHeight, DXGI_FORMAT_R8G8B8A8_UNORM, 0))) {
		DxUtSendError("Window could not be resized.");
	}
	ID3D10Texture2D* pBackBuffer;
	if (FAILED(g_pSwapChain->GetBuffer(0, __uuidof(ID3D10Texture2D), (void**)(&pBackBuffer)))) {
		DxUtSendError("Window could not be resized."); }
	if (FAILED(g_pD3DDevice->CreateRenderTargetView(pBackBuffer, 0, &g_pRenderTargetView))) {
		DxUtSendError("Window could not be resized."); }
	ReleaseX(pBackBuffer);

	D3D10_TEXTURE2D_DESC depthStencilDesc;
	depthStencilDesc.Width				= g_uiWndWidth;
	depthStencilDesc.Height				= g_uiWndHeight;
	depthStencilDesc.MipLevels			= 1;
	depthStencilDesc.ArraySize			= 1;
	depthStencilDesc.Format				= DXGI_FORMAT_D24_UNORM_S8_UINT;
	depthStencilDesc.SampleDesc.Count   = 1; 
	depthStencilDesc.SampleDesc.Quality = 0; 
	depthStencilDesc.Usage				= D3D10_USAGE_DEFAULT;
	depthStencilDesc.BindFlags			= D3D10_BIND_DEPTH_STENCIL;
	depthStencilDesc.CPUAccessFlags		= 0; 
	depthStencilDesc.MiscFlags			= 0;

	ID3D10Texture2D * depthStencilBuffer;
	if (FAILED(g_pD3DDevice->CreateTexture2D(&depthStencilDesc, 0, &depthStencilBuffer))) {
		DxUtSendError("Window could not be resized."); }
	if (FAILED(g_pD3DDevice->CreateDepthStencilView(depthStencilBuffer, 0, &g_pDepthStencilView))) {
		DxUtSendError("Window could not be resized."); }
	ReleaseX(depthStencilBuffer);

	g_pD3DDevice->OMSetRenderTargets(1, &g_pRenderTargetView, g_pDepthStencilView);

	D3D10_VIEWPORT vp;
	vp.TopLeftX = 0;
	vp.TopLeftY = 0;
	vp.Width    = g_uiWndWidth;
	vp.Height   = g_uiWndHeight;
	vp.MinDepth = 0.0f;
	vp.MaxDepth = 1.0f;

	g_pD3DDevice->RSSetViewports(1, &vp);
}
Exemple #3
0
void ExtractValuesFromImageFile(CHAR * szImageFile, void ** ppData,
	DWORD dwStride, DWORD * pdwImageWidth, DWORD * pdwImageHeight)
{
	CHAR file[MAX_PATH];
	InsertDirectory(g_szFileDir, szImageFile, file);

	D3DX10_IMAGE_INFO imageInfo;
	D3DX10GetImageInfoFromFileA(file, 0, &imageInfo, 0);
	DWORD width = imageInfo.Width; 
	if (pdwImageWidth) *pdwImageWidth = width;
	DWORD height = imageInfo.Height;
	if (pdwImageHeight) *pdwImageHeight = height;

	D3DX10_IMAGE_LOAD_INFO loadInfo;
	loadInfo.Width  = width;
	loadInfo.Height = height;
	loadInfo.Depth  = imageInfo.Depth;
	loadInfo.FirstMipLevel = 0;
	loadInfo.MipLevels = imageInfo.MipLevels;
	loadInfo.Usage = D3D10_USAGE_STAGING;
	loadInfo.BindFlags = 0;
	loadInfo.CpuAccessFlags = D3D10_CPU_ACCESS_READ;
	loadInfo.MiscFlags = 0;
	loadInfo.Format = imageInfo.Format;
	loadInfo.Filter = D3DX10_FILTER_NONE;
	loadInfo.MipFilter = D3DX10_FILTER_NONE;
	loadInfo.pSrcInfo  = 0;

	ID3D10Texture2D * tex;
	if (FAILED(D3DX10CreateTextureFromFileA(g_pD3DDevice, file, &loadInfo, 0, (ID3D10Resource**)&tex, NULL))) {
		DxUtSendErrorEx("ExtractValuesFromImageFile could not load the image file.", file);
	}

	*ppData = new CHAR[dwStride*width*height];
	D3D10_MAPPED_TEXTURE2D map;
	tex->Map(0, D3D10_MAP_READ, 0, &map);
	BYTE * ar = (BYTE*)map.pData;
	for (DWORD i=0; i<height; i++) {
		DWORD rowStart1 = i*dwStride*width;
		DWORD rowStart2 = i*dwStride*map.RowPitch/4;
		for (DWORD j=0; j<dwStride*width; j++) {
			((BYTE*)(*ppData))[rowStart1 + j] = ar[rowStart2 + j];
		}
	}
	tex->Unmap(0);
	ReleaseX(tex);
}
Exemple #4
0
void CEffect::CreateEffect(HMODULE hMod, LPCWSTR fxResource)
{
	DWORD flags = D3D10_SHADER_ENABLE_STRICTNESS;
#if defined (DEBUG) | (_DEBUG)
	flags |= D3D10_CREATE_DEVICE_DEBUG;
#endif
	ID3D10Blob * errors = NULL;
	D3DX10CreateEffectFromResourceW(hMod, fxResource, NULL, NULL, NULL,
		"fx_4_0", flags, 0, g_pD3DDevice, NULL, NULL, &m_pEffect, &errors, NULL);
	if (errors) {
		MessageBoxA(0, (char*)errors->GetBufferPointer(), 0, 0);
		_DestroyProcess(); }
	else if (!m_pEffect) {
		DxUtSendErrorEx("CreateEffect could not create ID3DX10Effect from resource.", (CHAR*)fxResource); 
	}

	ReleaseX(errors);
}
Exemple #5
0
void CEffect::CreateEffect(CHAR * szFxFile)
{
	char file[MAX_PATH];
	InsertDirectoryEx(g_szFileDir, szFxFile, file);

	DWORD flags = D3D10_SHADER_ENABLE_STRICTNESS;
#if defined (DEBUG) | (_DEBUG)
	flags |= D3D10_CREATE_DEVICE_DEBUG;
#endif
	ID3D10Blob * errors = NULL;
	D3DX10CreateEffectFromFileA(file, NULL, NULL, "fx_4_0", flags, 0,
		g_pD3DDevice, NULL, NULL, &m_pEffect, &errors, NULL);
	if (errors) {
		MessageBoxA(0, (char*)errors->GetBufferPointer(), 0, 0);
		_DestroyProcess(); }
	else if (!m_pEffect) {
		DxUtSendErrorEx("CreateEffect could not create ID3DX10Effect from file.", file); 
	}

	ReleaseX(errors);
}
Exemple #6
0
Sky::~Sky()
{
	ReleaseX(m_pSkyMesh);
	ReleaseX(m_pSkyTexture);
	ReleaseX(m_pEffect);
}