OGRE 引擎官方基础教程 (一)
先决条件:
1.本范例假设你能够设置和编译一个OGRE应用程序,具体方法见设置方法,并且具备一定的
C++语言编程基础。
2.本范例是基于OGRE WIKI 框架程序的。
开始工作:
BaseApplication.h BaseApplication.cpp TutorialApplication.h TutorialApplication.cpp
我们只对于 TutorialApplication.cpp中的createScene()成员函数进行操作
#include "TutorialApplication.h"TutorialApplication::TutorialApplication(void) {}TutorialApplication::~TutorialApplication(void) {}//------------------------------------------------------------------------------------- void TutorialApplication::createScene(void) {// Set the scene's ambient lightmSceneMgr->setAmbientLight(Ogre::ColourValue(0.5f, 0.5f, 0.5f));// Create an EntityOgre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");// Create a SceneNode and attach the Entity to itOgre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("HeadNode");headNode->attachObject(ogreHead);// Create a Light and set its positionOgre::Light* light = mSceneMgr->createLight("MainLight");light->setPosition(20.0f, 80.0f, 50.0f); }#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 #define WIN32_LEAN_AND_MEAN #include "windows.h" #endif#ifdef __cplusplus extern "C" {#endif#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ) #elseint main(int argc, char *argv[]) #endif{// Create application objectTutorialApplication app;try {app.go();} catch( Ogre::Exception& e ) {#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR| MB_TASKMODAL); #elsestd::cerr << "An exception has occured: " << e.getFullDescription().c_str() << std::endl; #endif}return 0;}#ifdef __cplusplus } #endif
Description: ../../Media/packs/OgreCore.zip - error whilst opening archive: Unable to read zip file
OGRE的基本工作方式:
mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5f, 0.5f, 0.5f));
然后我们创建一个实体
Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");
第一个参数是实体的名称,每个东西必须有一个独一无二的名称,后一个参数是实体的文件来源
Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("HeadNode");
同样的,结点也需要一个名称
headNode->attachObject(ogreHead);
Ogre::Light* light = mSceneMgr->createLight( "MainLight" );
light->setPosition(20, 80, 50);
Ogre::Entity* ogreHead2 = mSceneMgr->createEntity( "Head2", "ogrehead.mesh" ); Ogre::SceneNode* headNode2 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "HeadNode2", Ogre::Vector3( 100, 0, 0 ) ); headNode2->attachObject( ogreHead2 );
Ogre::SceneNode* headNode2 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "HeadNode2", Ogre::Vector3( 100, 0, 0 ) );
改为
Ogre::SceneNode* headNode2 = headNode->createChildSceneNode( "HeadNode2", Ogre::Vector3( 100, 0, 0 ) );
那么第二个结点就成为了第一个结点的子结点,如果执行
headNode2->translate( Ogre::Vector3( 10, 0, 10 ) );
headNode->translate( Ogre::Vector3( 25, 0, 0 ) );
mSceneMgr->setAmbientLight(Ogre::ColourValue(1.0, 1.0, 1.0));Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh"); Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("HeadNode"); headNode->attachObject(ogreHead);headNode->scale( .5, 1, 2 ); Ogre::Entity* ogreHead2 = mSceneMgr->createEntity( "Head2", "ogrehead.mesh" ); Ogre::SceneNode* headNode2 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "HeadNode2", Ogre::Vector3( 100, 0, 0 ) ); headNode2->attachObject( ogreHead2 );headNode2->scale( 1, 2, 1 );
mSceneMgr->setAmbientLight(Ogre::ColourValue(1.0, 1.0, 1.0));Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh"); Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("HeadNode"); headNode->attachObject(ogreHead);headNode->yaw( Ogre::Degree( -90 ) );Ogre::Entity* ogreHead2 = mSceneMgr->createEntity( "Head2", "ogrehead.mesh" ); Ogre::SceneNode* headNode2 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "HeadNode2", Ogre::Vector3( 100, 0, 0 ) ); headNode2->attachObject( ogreHead2 );headNode2->pitch( Ogre::Degree( -90 ) );Ogre::Entity* ogreHead3 = mSceneMgr->createEntity( "Head3", "ogrehead.mesh" ); Ogre::SceneNode* headNode3 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "HeadNode3", Ogre::Vector3( 200, 0, 0 ) ); headNode3->attachObject( ogreHead3 );headNode3->roll( Ogre::Degree( -90 ) );
DLLs and Plugins 关于库文件和插件的介绍
Main library
Plugins
你可以在需要或者不想使用的时候打开或者关闭第三方插件,Ogre中文件名以 "Plugin_" 开头的就是插件文件
Third party libraries and helper libraries
OGRE 引擎官方基础教程 (一)相关推荐
- 计算机一级幻灯片版式,ppt2010官方基础教程:添加不同版式幻灯片-powerpoint技巧-电脑技巧收藏家...
ppt2010官方基础教程:添加不同版式幻灯片 输入一些文本 启动 PowerPoint 时,将会显示要作为演示文稿封面的幻灯片. 将作为封面的幻灯片称为"标题幻灯片". 让我们在 ...
- 【Graph】NetworkX官方基础教程:图的生成与相关操作
NetworkX官方基础教程:图的生成与相关操作 1. Graph生成和graph操作 2. 分析图 3. 画图 参考资料 本文作为对图结构和复杂网络的快速上手,内容包括基于NetworkX进行图的生 ...
- 阮一峰:jQuery官方基础教程笔记
原文地址:http://www.jobbole.com/entry.php/1151 jQuery是目前使用最广泛的javascript函数库. 据统计,全世界排名前100万的网站,有46%使用jQu ...
- php单独使用blade模板引擎,laravel 基础教程 —— Blade 模板引擎
Blade 模板引擎 简介 Blade 是 laravel 提供的一个简单强大的模板引擎.它不像其他流行的 PHP 模板引擎那样限制你在视图中使用原生的 PHP 代码,事实上它就是把 Blade 视图 ...
- v8引擎处理html,JavaScript V8引擎基础教程
本篇教程介绍了JavaScript V8引擎基础教程,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入. < 一.浏览器内核-渲染引擎 渲染,就是根据描述或者定义构 ...
- PyQt5随笔:PyQt5 官方网站文档、一些基础教程网站和书籍推荐
PyQt5随笔:PyQt5 官方网站文档.一些基础教程网站和书籍推荐 文章目录 PyQt5随笔:PyQt5 官方网站文档.一些基础教程网站和书籍推荐 1. 官方网站文档 2.基础教程网站(点击标题即可 ...
- Atmega2560基础教程(2)——Atmega常用官方库及常用语句
Atmega2560基础教程(2)--Atmega常用官方库及常用语句 在开始正式开始编写Atmega2560代码之前,我们先来了解一下Atmega系列芯片比较独特的寄存器配置方式,以及会常用到的官方 ...
- Ogre基础教程3:地形,天空,烟雾
本教程将专注于在一个场景中渲染地形. 我们将涉及到需要被完成的基本设置,并且将介绍地形光照的使用. 我们也会给出对使用天空盒(Skyboxes).天空穹顶(Skydomes)以及天空面(Skyplan ...
- 虚幻引擎VR游戏开发基础教程
虚幻引擎VR游戏开发基础教程 了解如何使用 Oculus Quest 2 的蓝图在虚幻引擎 4 中从头开始构建基本的 VR 机制 课程英文名:Unreal Engine VR Development ...
最新文章
- Python培训分享:python爬虫可以用来做什么?
- ASP.NET编程中常用到的27个函数集
- 1. CMake 系列 - 从零构建动态库和静态库
- ionic助手 v1.9.0 一键式开发环境工具(告别命令行,超强功能)
- xyz坐标图_“色觉地图”的建立(二):辐照度与亮度、rgb空间、“颜色图”的混色方式...
- Bifrost微前端框架及其在美团闪购中的实践
- 信息学奥赛一本通(1248:Dungeon Master)
- Exp-00009错误解決
- 2017.8.8 loli测试
- Linux查看分区文件系统类型总结
- 第三周学习《对象与类》心得
- C#获取C# DLL中的指定接口的所有实现实例 - qq_19759475的博客 - CSDN博客
- 对称密码(共享秘钥密码)
- curl上传文件到服务器命令,linux curl上传文件到服务器
- Android 开机Logo、铃声、震动修改方案
- Shopee数据获取逻辑
- mysql是网状_三种数据模型---层次模型、网状模型以及关系模型
- 母亲的牛奶(dfs)
- 万字拿下leetcode线性数据结构
- 点击a标签,返回上一页
热门文章
- java继承关键字extends
- IDEA 利用MySQL驱动连接数据库
- 什么降风噪最好的蓝牙耳机?2021主动降噪耳机推荐
- 【IP技术】ipv4和ipv6是什么?
- 有一分数序列,2/1, 3/2, 5/3, 8/5, 13/8, 21/13,……,请编程求出这个数列的前20项之和。
- 5.Serializer,ModelSerializer区别
- EXCEL 数据分析基础知识
- 如何更改linux下的Apache端口号
- 宝哥面试题分享(07): Java中间件面试题
- GMM / MoG 聚类 Matlab 可视化 实现