Index: RenderSystems/GLES/include/OgreGLESSupport.h =================================================================== --- RenderSystems/GLES/include/OgreGLESSupport.h (revision 8310) +++ RenderSystems/GLES/include/OgreGLESSupport.h (working copy) @@ -80,6 +80,11 @@ virtual void initialiseExtensions(); virtual bool checkExtension(const String& ext) const; + virtual unsigned int getDisplayMonitorCount() const + { + return 1; + } + virtual void start() = 0; virtual void stop() = 0; Index: RenderSystems/GLES/include/OgreGLESRenderSystem.h =================================================================== --- RenderSystems/GLES/include/OgreGLESRenderSystem.h (revision 8310) +++ RenderSystems/GLES/include/OgreGLESRenderSystem.h (working copy) @@ -139,9 +139,11 @@ void _setTextureBorderColour(size_t stage, const ColourValue& colour); void _setTextureMipmapBias(size_t unit, float bias); void _setTextureMatrix(size_t stage, const Matrix4& xform); - void _setSceneBlending(SceneBlendFactor sourceFactor, SceneBlendFactor destFactor); - void _setSeparateSceneBlending(SceneBlendFactor sourceFactor, SceneBlendFactor destFactor, SceneBlendFactor sourceFactorAlpha, SceneBlendFactor destFactorAlpha); - void _setAlphaRejectSettings(CompareFunction func, unsigned char value); + void _setSceneBlending(SceneBlendFactor sourceFactor, SceneBlendFactor destFactor, SceneBlendOperation op ); + void _setSeparateSceneBlending(SceneBlendFactor sourceFactor, SceneBlendFactor destFactor, SceneBlendFactor sourceFactorAlpha, SceneBlendFactor destFactorAlpha, SceneBlendOperation op, SceneBlendOperation alphaOp ); + void _setSceneBlendingOperation(SceneBlendOperation op); + void _setSeparateSceneBlendingOperation(SceneBlendOperation op, SceneBlendOperation alphaOp); + void _setAlphaRejectSettings(CompareFunction func, unsigned char value, bool alphaToCoverage); void _setViewport(Viewport *vp); void _beginFrame(void); void _endFrame(void); @@ -195,6 +197,7 @@ GLESContext* _getMainContext() { return mMainContext; } void _unregisterContext(GLESContext *context); + unsigned int getDisplayMonitorCount() const; void _switchContext(GLESContext *context); void _oneTimeContextInitialization(); void initialiseContext(RenderWindow* primary); Index: RenderSystems/GLES/include/OgreGLESDefaultHardwareBufferManager.h =================================================================== --- RenderSystems/GLES/include/OgreGLESDefaultHardwareBufferManager.h (revision 8310) +++ RenderSystems/GLES/include/OgreGLESDefaultHardwareBufferManager.h (working copy) @@ -110,6 +110,8 @@ HardwareIndexBufferSharedPtr createIndexBuffer(HardwareIndexBuffer::IndexType itype, size_t numIndexes, HardwareBuffer::Usage usage, bool useShadowBuffer = false); + // Create a render to vertex buffer + RenderToVertexBufferSharedPtr createRenderToVertexBuffer(); }; } Index: RenderSystems/GLES/src/OgreGLESRenderSystem.cpp =================================================================== --- RenderSystems/GLES/src/OgreGLESRenderSystem.cpp (revision 8310) +++ RenderSystems/GLES/src/OgreGLESRenderSystem.cpp (working copy) @@ -1182,7 +1182,8 @@ return GL_ONE; } - void GLESRenderSystem::_setSceneBlending(SceneBlendFactor sourceFactor, SceneBlendFactor destFactor) + + void GLESRenderSystem::_setSceneBlending(SceneBlendFactor sourceFactor, SceneBlendFactor destFactor, SceneBlendOperation op ) { GLint sourceBlend = getBlendMode(sourceFactor); GLint destBlend = getBlendMode(destFactor); @@ -1199,17 +1200,19 @@ GL_CHECK_ERROR; } } - - void GLESRenderSystem::_setSeparateSceneBlending(SceneBlendFactor sourceFactor, - SceneBlendFactor destFactor, - SceneBlendFactor sourceFactorAlpha, - SceneBlendFactor destFactorAlpha) + + void GLESRenderSystem::_setSeparateSceneBlending( + SceneBlendFactor sourceFactor, SceneBlendFactor destFactor, + SceneBlendFactor sourceFactorAlpha, SceneBlendFactor destFactorAlpha, + SceneBlendOperation op, SceneBlendOperation alphaOp ) { // Not supported } - void GLESRenderSystem::_setAlphaRejectSettings(CompareFunction func, unsigned char value) + void GLESRenderSystem::_setAlphaRejectSettings(CompareFunction func, unsigned char value, bool alphaToCoverage) { + bool a2c = false; + static bool lasta2c = false; if (func == CMPF_ALWAYS_PASS) { glDisable(GL_ALPHA_TEST); @@ -1222,6 +1225,15 @@ glAlphaFunc(convertCompareFunction(func), value / 255.0f); GL_CHECK_ERROR; } + if (a2c != lasta2c && getCapabilities()->hasCapability(RSC_ALPHA_TO_COVERAGE)) + { + if (a2c) + glEnable(GL_SAMPLE_ALPHA_TO_COVERAGE); + else + glDisable(GL_SAMPLE_ALPHA_TO_COVERAGE); + + lasta2c = a2c; + } } void GLESRenderSystem::_setViewport(Viewport *vp) @@ -2084,7 +2096,12 @@ { // Not implemented } - + + unsigned int GLESRenderSystem::getDisplayMonitorCount() const + { + return mGLSupport->getDisplayMonitorCount(); + } + void GLESRenderSystem::setClipPlanesImpl(const Ogre::PlaneList& clipPlanes) { // A note on GL user clipping: Index: RenderSystems/GLES/src/OgreGLESDefaultHardwareBufferManager.cpp =================================================================== --- RenderSystems/GLES/src/OgreGLESDefaultHardwareBufferManager.cpp (revision 8310) +++ RenderSystems/GLES/src/OgreGLESDefaultHardwareBufferManager.cpp (working copy) @@ -164,4 +164,12 @@ return HardwareIndexBufferSharedPtr( new GLESDefaultHardwareIndexBuffer(itype, numIndexes, usage)); } + + RenderToVertexBufferSharedPtr + GLESDefaultHardwareBufferManager::createRenderToVertexBuffer() + { + OGRE_EXCEPT(Exception::ERR_RENDERINGAPI_ERROR, + "Cannot create RenderToVertexBuffer in GLESDefaultHardwareBufferManager", + "GLESDefaultHardwareBufferManager::createRenderToVertexBuffer"); + } } Index: RenderSystems/GLES/src/EGL/OgreEGLWindow.cpp =================================================================== --- RenderSystems/GLES/src/EGL/OgreEGLWindow.cpp (revision 8310) +++ RenderSystems/GLES/src/EGL/OgreEGLWindow.cpp (working copy) @@ -182,7 +182,7 @@ if ((opt = miscParams->find("parentWindowHandle")) != end) { - std::vector tokens = StringUtil::split(opt->second, " :"); + StringVector tokens = StringUtil::split(opt->second, " :"); if (tokens.size() == 3) { @@ -197,7 +197,7 @@ } else if ((opt = miscParams->find("externalWindowHandle")) != end) { - std::vector tokens = StringUtil::split(opt->second, " :"); + StringVector tokens = StringUtil::split(opt->second, " :"); LogManager::getSingleton().logMessage( "EGLWindow::create: The externalWindowHandle parameter is deprecated.\n"