mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-22 03:53:52 +00:00
116 lines
3 KiB
C
116 lines
3 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__
|