mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-11 09:36:37 +00:00
116 lines
3.0 KiB
C++
116 lines
3.0 KiB
C++
/*!
|
||
@file
|
||
@author Albert Semenov
|
||
@date 04/2008
|
||
@module
|
||
*/
|
||
|
||
#ifndef __MYGUI_OGRE_RENDER_MANAGER_H__
|
||
#define __MYGUI_OGRE_RENDER_MANAGER_H__
|
||
|
||
#include "MyGUI_Prerequest.h"
|
||
#include "MyGUI_Instance.h"
|
||
#include "MyGUI_RenderFormat.h"
|
||
#include "MyGUI_IVertexBuffer.h"
|
||
#include "MyGUI_RenderManager.h"
|
||
|
||
#include <Ogre.h>
|
||
|
||
#include "MyGUI_LastHeader.h"
|
||
|
||
namespace MyGUI
|
||
{
|
||
|
||
class OgreRenderManager :
|
||
public RenderManager,
|
||
public IRenderTarget,
|
||
public Ogre::WindowEventListener,
|
||
public Ogre::RenderQueueListener,
|
||
public Ogre::RenderSystem::Listener
|
||
{
|
||
MYGUI_INSTANCE_HEADER(OgreRenderManager)
|
||
|
||
public:
|
||
void initialise(Ogre::RenderWindow* _window, Ogre::SceneManager* _scene);
|
||
void shutdown();
|
||
|
||
virtual const IntSize& getViewSize() const { return mViewSize; }
|
||
|
||
virtual VertexColourType getVertexFormat() { return mVertexFormat; }
|
||
|
||
virtual IVertexBuffer* createVertexBuffer();
|
||
virtual void destroyVertexBuffer(IVertexBuffer* _buffer);
|
||
|
||
virtual ITexture* createTexture(const std::string& _name);
|
||
virtual void destroyTexture(ITexture* _texture);
|
||
virtual ITexture* getTexture(const std::string& _name);
|
||
|
||
virtual bool isFormatSupported(PixelFormat _format, TextureUsage _usage);
|
||
|
||
virtual void begin();
|
||
virtual void end();
|
||
|
||
virtual void doRender(IVertexBuffer* _buffer, ITexture* _texture, size_t _count);
|
||
|
||
virtual const RenderTargetInfo& getInfo() { return mInfo; }
|
||
|
||
void setRenderSystem(Ogre::RenderSystem* _render);
|
||
|
||
void setRenderWindow(Ogre::RenderWindow* _window);
|
||
|
||
/** Set scene manager where MyGUI will be rendered */
|
||
void setSceneManager(Ogre::SceneManager* _scene);
|
||
|
||
/** Get GUI viewport index */
|
||
size_t getActiveViewport() { return mActiveViewport; }
|
||
|
||
/** Set GUI viewport index */
|
||
void setActiveViewport(size_t _num);
|
||
|
||
Ogre::RenderWindow * getRenderWindow() { return mWindow; }
|
||
|
||
#if MYGUI_DEBUG_MODE == 1
|
||
virtual bool checkTexture(ITexture* _texture);
|
||
#endif
|
||
|
||
private:
|
||
virtual void renderQueueStarted(Ogre::uint8 queueGroupId, const Ogre::String& invocation, bool& skipThisInvocation);
|
||
virtual void renderQueueEnded(Ogre::uint8 queueGroupId, const Ogre::String& invocation, bool& repeatThisInvocation);
|
||
virtual void windowResized(Ogre::RenderWindow* _window);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
virtual void eventOccurred(const Ogre::String& eventName, const Ogre::NameValuePairList* parameters);
|
||
|
||
void destroyAllResources();
|
||
void updateRenderInfo();
|
||
|
||
private:
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD>
|
||
bool mUpdate;
|
||
|
||
IntSize mViewSize;
|
||
|
||
Ogre::SceneManager* mSceneManager;
|
||
|
||
VertexColourType mVertexFormat;
|
||
|
||
// <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Ogre::RenderWindow* mWindow;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
size_t mActiveViewport;
|
||
|
||
Ogre::RenderSystem* mRenderSystem;
|
||
Ogre::TextureUnitState::UVWAddressingMode mTextureAddressMode;
|
||
Ogre::LayerBlendModeEx mColorBlendMode, mAlphaBlendMode;
|
||
|
||
RenderTargetInfo mInfo;
|
||
|
||
typedef std::map<std::string, ITexture*> MapTexture;
|
||
MapTexture mTextures;
|
||
};
|
||
|
||
} // namespace MyGUI
|
||
|
||
#endif // __MYGUI_OGRE_RENDER_MANAGER_H__
|