simplemesh.cpp

来自「java实现的简单的分形树。简单易学!是学习分形知识的很好的例子。其java语法」· C++ 代码 · 共 56 行

CPP
56
字号
#include "stdafx.h"
#include "SimpleMesh.h"


CSimpleMesh::CSimpleMesh( const CResourceId& meshID )
:	mMeshID(meshID)
{
	mAABB = RGET_MESH(meshID)->getTotalAABB();
}

void CSimpleMesh::render( eRenderMode mode )
{
	if( preRender() ) {
		TMeshVector& vv = mParts[mode];
		int n = vv.size();
		for( int i = 0; i < n; ++i ) {
			CRenderableMesh* r = vv[i];
			G_RENDERCTX->attach( *r );
		}
	}
}

void CSimpleMesh::addMeshPart( int attrID, const CResourceId& texID )
{
	CMesh* mesh = RGET_MESH(mMeshID);
	CD3DTexture& tex = *RGET_TEX(texID);

	CRenderableMesh* m;
	m = new CRenderableMesh( *mesh, attrID, &mMatrix.getOrigin() );
	mParts[BASE].push_back( m );
	m->getParams().setEffect( *RGET_FX("mesh") );
	m->getParams().addMatrix4x4Ref( "mWorld", mMatrix );
	m->getParams().addMatrix4x4Ref( "mWorldView", mWorldView );
	m->getParams().addMatrix4x4Ref( "mWVP", mWVP );
	m->getParams().addTexture( "tBase", tex );

	m = new CRenderableMesh( *mesh, attrID, &mMatrix.getOrigin() );
	mParts[COLOR].push_back( m );
	m->getParams().setEffect( *RGET_FX("meshColorOnly") );
	m->getParams().addMatrix4x4Ref( "mWorld", mMatrix );
	m->getParams().addMatrix4x4Ref( "mWorldView", mWorldView );
	m->getParams().addMatrix4x4Ref( "mWVP", mWVP );
	m->getParams().addTexture( "tBase", tex );
	
	m = new CRenderableMesh( *mesh, attrID, &mMatrix.getOrigin() );
	mParts[NORMALZ].push_back( m );
	m->getParams().setEffect( *RGET_FX("fallbackNormalZ") );
	m->getParams().addMatrix4x4Ref( "mWorld", mMatrix );
	m->getParams().addMatrix4x4Ref( "mWVP", mWVP );

	m = new CRenderableMesh( *mesh, attrID, &mMatrix.getOrigin() );
	mParts[SHADOW].push_back( m );
	m->getParams().setEffect( *RGET_FX("meshShadow") );
	m->getParams().addMatrix4x4Ref( "mWVP", mWVP );
}

⌨️ 快捷键说明

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