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

📄 renderablemesh.cpp

📁 java实现的简单的分形树。简单易学!是学习分形知识的很好的例子。其java语法简单
💻 CPP
字号:
// --------------------------------------------------------------------------
// Dingus project - a collection of subsystems for game/graphics applications
// --------------------------------------------------------------------------
#include "stdafx.h"

#include "RenderableMesh.h"
#include "RenderContext.h"
#include "../utils/Errors.h"
#include "../kernel/D3DDevice.h"


using namespace dingus;

DEFINE_POOLED_ALLOC(dingus::CRenderableMesh,256,false);


CRenderableMesh::CRenderableMesh( CMesh& mesh, int group, const SVector3* origin, int priority )
:	CRenderable( origin, priority ),
	mMesh( &mesh ),
	mGroup( group )
{
	assert( group >= 0 && group < mesh.getGroupCount() || group == ALL_GROUPS );
	assert( mesh.isCreated() );
}


void CRenderableMesh::render( CRenderContext const& ctx )
{
	assert( mMesh );

	HRESULT hres;
	//IDirect3DIndexBuffer9* ib = &mMesh->getIB();
	//IDirect3DVertexBuffer9* vb = &mMesh->getVB();
	//assert( ib && vb );

	CD3DDevice& device = CD3DDevice::getInstance();
	IDirect3DDevice9& dx = device.getDevice();
	CRenderStats& stats = device.getStats();

	device.setIndexBuffer( &mMesh->getIB() );
	device.setVertexBuffer( 0, &mMesh->getVB(), 0, mMesh->getVertexStride() );
	device.setDeclaration( mMesh->getVertexDecl() );

	if( mGroup == ALL_GROUPS ) {
		hres = dx.DrawIndexedPrimitive( D3DPT_TRIANGLELIST,
			0, 0, mMesh->getVertexCount(),
			0, mMesh->getIndexCount()/3 );
		stats.incVerticesRendered( mMesh->getVertexCount() );
		stats.incPrimsRendered( mMesh->getIndexCount()/3 );
	} else {
		const CMesh::CGroup& group = mMesh->getGroup( mGroup );
		hres = dx.DrawIndexedPrimitive( D3DPT_TRIANGLELIST,
			0, group.getFirstVertex(), group.getVertexCount(),
			group.getFirstPrim() * 3, group.getPrimCount() );
		stats.incVerticesRendered( group.getVertexCount() );
		stats.incPrimsRendered( group.getPrimCount() );
	}
	if( FAILED( hres ) ) {
		THROW_DXERROR( hres, "failed to DIP" );
	}

	// stats
	stats.incDrawCalls();
}

⌨️ 快捷键说明

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