Irrlicht学习之载入网格(mesh)文件

Irrlicht学习之载入网格(mesh)文件

 

         学习Irrlicht载入网格文件,其实非常简单。通过我仿照例子写的一段代码,很简单地载入网格文件。

         首先向大家介绍一下如何利用Irrlicht的源代码和doxygen生成帮助文档。进入irrlicht目录,在irrlicht-1.7.3/scripts/doc/irrlicht中,Windows下点击makedocumentation.bat,Linux下点击makedocumentation.sh,就可以根据代码生成帮助文档了。帮助文档在irrlicht-1.7.3/doctemp/html,找到index.html即可查看。下面是相关的截图:

         载入网格文件非常简单。下面直接贴出代码:

#include <irrlicht.h>

// 针对Windows系统的配置
#ifdef _IRR_WINDOWS_
#pragma comment( lib, "Irrlicht.lib" )
#pragma comment( linker, "/subsystem:windows /ENTRY:mainCRTStartup" )
#endif

// 定义空指针
#ifndef nullptr
#define nullptr 0
#endif

using namespace irr;
using namespace core;
using namespace video;
using namespace scene;

int main( int argc, char** argv )
{
	IrrlichtDevice* pDevice = createDevice(
		EDT_OPENGL,						// 渲染设备
		dimension2d<u32>( 640, 480 ),	// 宽和高
		16,								// 颜色位
		false,							// 是否全屏
		false,							// 模版缓存
		false,							// 垂直同步
		nullptr );						// 事件接收器
	
	if ( pDevice == nullptr ) return -1;

	IVideoDriver* pDriver = pDevice->getVideoDriver( );
	ISceneManager* pSMgr = pDevice->getSceneManager( );
	IAnimatedMesh* pMesh = pSMgr->getMesh( "sydney.md2" );
	
	ISceneNode* pNode = pSMgr->addMeshSceneNode( pMesh );

	if ( pNode != nullptr )
	{
		pNode->setMaterialFlag( EMF_LIGHTING, false );// 不接收光
		pNode->setMaterialFlag( EMF_ANISOTROPIC_FILTER, true );// 使用各向异性过滤
		pNode->setMaterialTexture(						// 设置纹理
			0,											// 纹理层
			pDriver->getTexture( "sydney.bmp" ) );		// 纹理的路径
	}

	pSMgr->addCameraSceneNode(// 创建一个PVU摄像机(Position-View-Upward)
		nullptr,
		vector3df( 0.0f, 30.0f, 60.0f ),
		vector3df( 0.0f, 0.0f, 0.0f ) );

	while ( pDevice->run( ) )
	{
		pDriver->beginScene(
			true,							// 后台缓存
			true,							// Z缓存
			SColor( 255, 255, 255, 255 ) );	// 填充颜色
		pSMgr->drawAll( );
		pDriver->endScene( );
	}

	return 0;
}


演示程序和源代码下载地址:这里

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值