摘要: 预处理器运算符:#:实参两边加双引号,如#define(a) #a ,表示"a"#@:实参两边加单引号##:实参连接标记,如#define(a, b) a##b,表示ab自制小示例:#include <iostream>using namespace std;#define QUOTES(a) #a#define TEXTLINK(a, i, b) QUOTES(a##i##b) int main(){ cout << TEXTLINK(out, 1, .txt) << endl;}输出:out5.txt 阅读全文
posted @ 2012-06-17 11:09 橘子小酥 阅读(625) 评论(4) 推荐(1) 编辑
摘要: 增加动画:Ogre::Entity* _ent; // 增加动画效果的实体的指针Ogre::AnimationState* _aniState; // 所使用动画状态的指针_aniState = _ent->getAnimationState("Dance"); // 获取“Dance”动画状态_aniState->setEnabled(true); // 允许动画_aniState->setLoop(true); // 允许动画循环_aniState->addTime(evt.timeSinceLastFrame); // 距上次刷新的时间设定移动 阅读全文
posted @ 2011-05-04 16:30 橘子小酥 阅读(409) 评论(0) 推荐(0) 编辑
摘要: FrameListener:class Example25FrameListener : public Ogre::FrameListener // 帧监听{private: Ogre::SceneNode* _node;public: Example25FrameListener(Ogre::SceneNode* node) { _node = node; } bool frameStarted(const Ogre::FrameEvent &evt) // 每一帧开始前所做的工作 { _node->translate(Ogre::Vector3(0.1,0,0)); // 每 阅读全文
posted @ 2011-05-03 15:09 橘子小酥 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 创建平面:Ogre::Plane plane(Vector3::UNIT_Y, -10); // 通过法线创建一个平面Ogre::MeshManager::getSingleton().createPlane("plane", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane, 1500,1500,20,20,true,1,5,5,Vector3::UNIT_Z); // Vector3::UNIT_Z定义了面的正向Ogre::Entity* ent = mSceneMgr->createEntity(& 阅读全文
posted @ 2011-04-28 21:50 橘子小酥 阅读(837) 评论(0) 推荐(0) 编辑
摘要: 旋转:Ogre::Entity* ent2 = mSceneMgr->createEntity("MyEntity2","Sinbad.mesh");Ogre::SceneNode* node2 = mSceneMgr->createSceneNode("Node2");node->addChild(node2);node2->setPosition(10,0,0);node2->pitch(Ogre::Radian(Ogre::Math::HALF_PI)); // 绕x轴旋转, 旋转方式: 弧度nod 阅读全文
posted @ 2011-04-28 17:08 橘子小酥 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 析构函数绝对不要吐出异常。如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们(不传播)或结束程序。如果客户需要对某个操作函数运行期间抛出的异常做出反应,那么class应该提供一个普通函数(而非在析构函数中)执行该操作。 阅读全文
posted @ 2011-03-28 22:56 橘子小酥 阅读(184) 评论(0) 推荐(0) 编辑
摘要: polymorphic(带多态性质的)base classes应该声明一个virtual析构函数。如果class带有任何virtual函数,它就应该拥有一个virtual析构函数。Classes的设计目的如果不是作为base classes使用,或不是为了具备多态性(polymorphically),就不应该声明virtual析构函数。 阅读全文
posted @ 2011-03-27 23:12 橘子小酥 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 为驳回编译器自动(暗自)提供的机能,可将相应的成员函数声明为private并且不予实现。使用像Uncopyable这样的base class也是一种做法。class Uncopyable{protected: Uncopyable(){} ~Uncopyable(){}private: Uncopyable(const Uncopyable&); Uncopyable& operator=(const Uncopyable&); }; 阅读全文
posted @ 2011-03-22 13:57 橘子小酥 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 编译器可以暗自为class创建default构造函数、copy构造函数、copy assignment操作符,以及析构函数。 阅读全文
posted @ 2011-03-21 17:29 橘子小酥 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 为内置型对象进行手工初始化,因为C++不保证初始化它们。构造函数最好使用成员初值列(member initialization list),而不要在构造函数本体内使用赋值操作(assignment)。初值列列出的成员变量,其排列次序应该和它们在class中的声明次序相同。为免除“跨编译单元之初始化次序”问题,请以local static对象替换non-local static对象。 阅读全文
posted @ 2011-03-20 23:03 橘子小酥 阅读(287) 评论(0) 推荐(1) 编辑