void setRenderSystem(Ogre::RenderSystem* _render) { // отписываемся if (mRenderSystem != nullptr) { mRenderSystem->removeListener(this); mRenderSystem = nullptr; } mRenderSystem = _render; // подписываемся на рендер евент if (mRenderSystem != nullptr) { mRenderSystem->addListener(this); // формат цвета в вершинах Ogre::VertexElementType vertex_type = mRenderSystem->getColourVertexElementType(); if (vertex_type == Ogre::VET_COLOUR_ARGB) mVertexFormat = VertexColourType::ColourARGB; else if (vertex_type == Ogre::VET_COLOUR_ABGR) mVertexFormat = VertexColourType::ColourABGR; updateRenderInfo(); } }
void OgreRenderManager::setRenderSystem(Ogre::RenderSystem* _render) { // отписываемся if (mRenderSystem != nullptr) { mRenderSystem->removeListener(this); mRenderSystem = nullptr; } mRenderSystem = _render; // подписываемся на рендер евент if (mRenderSystem != nullptr) { mRenderSystem->addListener(this); // формат цвета в вершинах Ogre::VertexElementType vertex_type = mRenderSystem->getColourVertexElementType(); if (vertex_type == Ogre::VET_COLOUR_ARGB) mVertexFormat = VertexColourType::ColourARGB; else if (vertex_type == Ogre::VET_COLOUR_ABGR) mVertexFormat = VertexColourType::ColourABGR; updateRenderInfo(); if (!mRenderSystem->getFixedPipelineEnabled()) { mVertexProgram = Ogre::HighLevelGpuProgramManager::getSingleton().createProgram( "MyGUI_VP.glsles", OgreDataManager::getInstance().getGroup(), "glsles", Ogre::GPT_VERTEX_PROGRAM); mVertexProgram->setSourceFile("MyGUI_VP.glsles"); mVertexProgram->load(); mFragmentProgram = Ogre::HighLevelGpuProgramManager::getSingleton().createProgram( "MyGUI_FP.glsles", OgreDataManager::getInstance().getGroup(), "glsles", Ogre::GPT_FRAGMENT_PROGRAM); mFragmentProgram->setSourceFile("MyGUI_FP.glsles"); mFragmentProgram->load(); } } }
// для оповещений об изменении окна рендера void windowResized(Ogre::RenderWindow* _window) { if (_window->getNumViewports() > mActiveViewport) { Ogre::Viewport* port = _window->getViewport(mActiveViewport); #if OGRE_VERSION >= MYGUI_DEFINE_VERSION(1, 7, 0) && OGRE_NO_VIEWPORT_ORIENTATIONMODE == 0 Ogre::OrientationMode orient = port->getOrientationMode(); if (orient == Ogre::OR_DEGREE_90 || orient == Ogre::OR_DEGREE_270) mViewSize.set(port->getActualHeight(), port->getActualWidth()); else mViewSize.set(port->getActualWidth(), port->getActualHeight()); #else mViewSize.set(port->getActualWidth(), port->getActualHeight()); #endif // обновить всех mUpdate = true; updateRenderInfo(); onResizeView(mViewSize); } }