⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clclass.cpp

📁 在GPU上实现数值模拟技术(线性方程组)的通用架构
💻 CPP
字号:
/************************************************************
 *															*
 * decr     : base class for al clClasses					*
 * version  : 1.0											*
 * author   : Jens Kr黦er									*
 * date     : 16.09.2003									*
 * modified	: 16.09.2003									*
 * e-mail   : jens.krueger@in.tum.de						*
 *															*
 ************************************************************/

#include "clClass.h"


const DWORD clClass::CL_TEX2D_VERTEX_FVF = D3DFVF_XYZ | D3DFVF_TEX1 | D3DFVF_TEXCOORDSIZE2(0);
CL_TEX2D_VERTEX clClass::ms_hCoverQuad[4]= {{ -1,  1, 0, 0, 0},
											{  1,  1, 0, 1, 0},
											{ -1, -1, 0, 0, 1},
											{  1, -1, 0, 1, 1}};

CL_TEX2D_VERTEX clClass::ms_hCoverTriangle[3]= {{ -1,  1, 0, 0, 0},
												{  3,  1, 0, 2, 0},
												{ -1, -3, 0, 0, 2}};

LPDIRECT3DDEVICE9		clClass::m_pd3dDevice=NULL;
LPDIRECT3DVERTEXBUFFER9	clClass::ms_pCoverVB=NULL;
UINT					clClass::ms_cPasses=0;
clMemMan*				clClass::ms_memoryMananger=NULL;

#ifdef optNVIDIA
	#define PS_PROFILE "ps_2_a"
#else
	#define PS_PROFILE "ps_2_0"
#endif

D3DXMACRO				clClass::ms_clPSProfile[2] = { { "PS_PROFILE", PS_PROFILE }, {NULL,NULL} };




HRESULT clClass::StartupCLFrameWork(LPDIRECT3DDEVICE9 pd3dDevice) {
	HRESULT hr;

	m_pd3dDevice = pd3dDevice;

	if (ms_pCoverVB == NULL) {
		#ifdef useCoverQuad
			CHECK_HR(DirectXUtils::createFilledVertexBuffer(m_pd3dDevice,ms_hCoverQuad,sizeof(CL_TEX2D_VERTEX)*4,CL_TEX2D_VERTEX_FVF ,D3DPOOL_DEFAULT,ms_pCoverVB));
		#else
			CHECK_HR(DirectXUtils::createFilledVertexBuffer(m_pd3dDevice,ms_hCoverTriangle,sizeof(CL_TEX2D_VERTEX)*3,CL_TEX2D_VERTEX_FVF, D3DPOOL_DEFAULT,ms_pCoverVB));
		#endif
	}

	if (ms_memoryMananger == NULL) ms_memoryMananger = new clMemMan(pd3dDevice);

	return S_OK;
}

void clClass::ShutdownCLFrameWork() {
	SAFE_RELEASE(ms_pCoverVB);
	SAFE_DELETE(ms_memoryMananger);
}


HRESULT clClass::RenderViewPortCover() {
	HRESULT hr;

	CHECK_HR(m_pd3dDevice->SetStreamSource( 0, ms_pCoverVB, 0, sizeof(CL_TEX2D_VERTEX) ));
	CHECK_HR(m_pd3dDevice->SetFVF( CL_TEX2D_VERTEX_FVF ));

#ifdef useCoverQuad
	CHECK_HR(m_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2));
#else
	CHECK_HR(m_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,1));
#endif

	return S_OK;
}

HRESULT clClass::RenderViewPortCover(LPD3DXEFFECT effect, int iPass) {
	HRESULT hr;

	CHECK_HR(effect->Begin(&ms_cPasses, 0));
		CHECK_HR(effect->BeginPass(iPass));
		CHECK_HR(RenderViewPortCover());
		CHECK_HR(effect->EndPass());
	CHECK_HR(effect->End());

	return S_OK;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -