x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
OgreMaxRenderWindowIterator.hpp - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\OgreMaxScene\include\OgreMaxRenderWindowIterator.hpp
旋转
特效
属性
历史版本
/* * OgreMaxViewer - An Ogre 3D-based viewer for .scene and .mesh files * Copyright 2008 Derek Nedelman * * This code is available under the OgreMax Free License: * -You may use this code for any purpose, commercial or non-commercial. * -If distributing derived works (that use this source code) in binary or source code form, * you must give the following credit in your work's end-user documentation: * "Portions of this work provided by OgreMax (www.ogremax.com)" * * Derek Nedelman assumes no responsibility for any harm caused by using this code. * * OgreMaxViewer was written by Derek Nedelman and released at www.ogremax.com */ #ifndef OgreMax_OgreMaxRenderWindowIterator_INCLUDED #define OgreMax_OgreMaxRenderWindowIterator_INCLUDED //Classes---------------------------------------------------------------------- namespace OgreMax { /** * An interface for iterating through a collection of Ogre::RenderWindow objects * This should not be used to natively store render windows. Instead, * it should be created as needed, wrapping access to a real collection that is * stored elsewhere. */ class OgreMaxRenderWindowIterator { public: virtual ~OgreMaxRenderWindowIterator() {} virtual bool Start() = 0; virtual Ogre::RenderWindow* GetCurrent() = 0; virtual bool MoveNext() = 0; }; /** Accesses one render window */ class OgreMaxOneRenderWindow : public OgreMaxRenderWindowIterator { public: OgreMaxOneRenderWindow(Ogre::RenderWindow* renderWindow) { this->renderWindow = renderWindow; this->iterationEnabled = false; } bool Start() { this->iterationEnabled = this->renderWindow != 0; return this->iterationEnabled; } Ogre::RenderWindow* GetCurrent() { if (this->iterationEnabled) { this->iterationEnabled = false; return this->renderWindow; } return 0; } bool MoveNext() { this->iterationEnabled = false; return this->iterationEnabled; } protected: Ogre::RenderWindow* renderWindow; bool iterationEnabled; }; /** Accesses a render window array */ class OgreMaxRenderWindowArray : public OgreMaxRenderWindowIterator { public: OgreMaxRenderWindowArray(Ogre::RenderWindow** renderWindows, size_t renderWindowCount) { this->renderWindows = renderWindows; this->renderWindowCount = renderWindowCount; this->iterationEnabled = false; } bool Start() { this->iterationEnabled = this->renderWindowCount > 0; if (this->iterationEnabled) this->iterationIndex = 0; return this->iterationEnabled; } Ogre::RenderWindow* GetCurrent() { if (this->iterationEnabled) return this->renderWindows[this->iterationIndex]; return 0; } bool MoveNext() { if (this->iterationEnabled) { if (++this->iterationIndex == this->renderWindowCount) this->iterationEnabled = false; } return this->iterationEnabled; } protected: Ogre::RenderWindow** renderWindows; size_t renderWindowCount; size_t iterationIndex; bool iterationEnabled; }; /** * Accesses a render window collection (std::list, std::vector, std::set, and so on) * Example usage with a non-const list: * OgreMaxRenderWindowCollection
&, std::list
::iterator> renderWindows(myRenderWindowList); * Example usage with a const vector: * OgreMaxRenderWindowCollection
&, std::vector
::const_iterator> renderWindows(myRenderWindowVector); */ template
class OgreMaxRenderWindowCollection : public OgreMaxRenderWindowIterator { public: OgreMaxRenderWindowCollection(COLLECTION renderWindowCollection) : renderWindows(renderWindowCollection) { this->iterationEnabled = false; } bool Start() { this->iterationEnabled = !this->renderWindows.empty(); if (this->iterationEnabled) this->iterator = this->renderWindows.begin(); return this->iterationEnabled; } Ogre::RenderWindow* GetCurrent() { if (this->iterationEnabled) return *this->iterator; return 0; } bool MoveNext() { if (this->iterationEnabled) { if (++this->iterator == this->renderWindows.end()) this->iterationEnabled = false; } return this->iterationEnabled; } protected: COLLECTION renderWindows; ITERATOR iterator; bool iterationEnabled; }; } #endif
OgreMaxRenderWindowIterator.hpp
网页地址
文件地址
上一页
3/8
下一页
下载
( 5 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.