Esempio n. 1
0
    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();
        }
    }
Esempio n. 2
0
	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();
			}
		}
	}
Esempio n. 3
0
    // для оповещений об изменении окна рендера
    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);
        }
    }