www.pudn.com > CloudDemo.rar > d3dUtil.h, change:2005-12-23,size:2614b


//============================================================================= 
// d3dUtil.h by Frank Luna (C) 2005 All Rights Reserved. 
// 
// Contains various utility code for DirectX applications, such as, clean up 
// and debugging code. 
//============================================================================= 
 
#ifndef D3DUTIL_H 
#define D3DUTIL_H 
 
// Enable extra D3D debugging in debug builds if using the debug DirectX runtime.   
// This makes D3D objects work well in the debugger watch window, but slows down  
// performance slightly. 
#if defined(DEBUG) | defined(_DEBUG) 
#ifndef D3D_DEBUG_INFO 
#define D3D_DEBUG_INFO 
#endif 
#endif 
 
#include <d3d9.h> 
#include <d3dx9.h> 
#include <dxerr9.h> 
#include <string> 
#include <sstream> 
#include <vector> 
 
//=============================================================== 
// Globals for convenient access. 
class D3DApp; 
extern D3DApp* gd3dApp; 
extern IDirect3DDevice9* gd3dDevice; 
 
//=============================================================== 
// Clean up 
 
#define ReleaseCOM(x) { if(x){ x->Release();x = 0; } } 
 
//=============================================================== 
// Geometry generation. 
 
void GenTriGrid(int numVertRows, int numVertCols,  
	float dx, float dz, const D3DXVECTOR3& center,  
	std::vector<D3DXVECTOR3>& verts, std::vector<DWORD>& indices); 
 
//=============================================================== 
// Colors and Materials 
 
const D3DXCOLOR WHITE(1.0f, 1.0f, 1.0f, 1.0f); 
const D3DXCOLOR BLACK(0.0f, 0.0f, 0.0f, 1.0f); 
const D3DXCOLOR RED(1.0f, 0.0f, 0.0f, 1.0f); 
const D3DXCOLOR GREEN(0.0f, 1.0f, 0.0f, 1.0f); 
const D3DXCOLOR BLUE(0.0f, 0.0f, 1.0f, 1.0f); 
 
struct Mtrl 
{ 
	Mtrl() 
		:ambient(WHITE), diffuse(WHITE), spec(WHITE), specPower(8.0f){} 
	Mtrl(const D3DXCOLOR& a, const D3DXCOLOR& d,  
		 const D3DXCOLOR& s, float power) 
		:ambient(a), diffuse(d), spec(s), specPower(power){} 
 
	D3DXCOLOR ambient; 
	D3DXCOLOR diffuse; 
	D3DXCOLOR spec; 
	float specPower; 
}; 
 
//=============================================================== 
// Debug 
 
#if defined(DEBUG) | defined(_DEBUG) 
	#ifndef HR 
	#define HR(x)                                      \ 
	{                                                  \ 
		HRESULT hr = x;                                \ 
		if(FAILED(hr))                                 \ 
		{                                              \ 
			DXTrace(__FILE__, __LINE__, hr, #x, TRUE); \ 
		}                                              \ 
	} 
	#endif 
 
#else 
	#ifndef HR 
	#define HR(x) x; 
	#endif 
#endif  
 
#endif // D3DUTIL_H