diff options
author | Emmanuel Gil Peyrot <emmanuel.peyrot@collabora.com> | 2015-12-21 21:25:34 +0000 |
---|---|---|
committer | Tomaž Vajngerl <tomaz.vajngerl@collabora.com> | 2016-01-05 15:05:48 +0100 |
commit | d886fef25c5978dd4b07fa0e3ce2402874a6c29a (patch) | |
tree | af65588ed568051a113b5610891ff993c8405c13 /slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx | |
parent | 1d411cad5a7d78ead8cffb5da522f1e0fba31187 (diff) |
slideshow: Improve the Vortex transition to match PowerPoint better
Change-Id: I60e0b71d41a726459baeb7e590745d6bfb58e884
Diffstat (limited to 'slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx')
-rw-r--r-- | slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx b/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx index cafc8aeb2bfd..19c92b705f05 100644 --- a/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx +++ b/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx @@ -1557,12 +1557,12 @@ public: private: virtual void prepare( double nTime, double SlideWidth, double SlideHeight, double DispWidth, double DispHeight ) override; - virtual void finish( double nTime, double SlideWidth, double SlideHeight, double DispWidth, double DispHeight ) override; - virtual GLuint makeShader() const override; virtual void prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex ) override; + virtual void displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale ) override; + GLint mnTileInfoLocation; GLuint mnTileInfoBuffer; @@ -1573,8 +1573,6 @@ private: void VortexTransition::prepare( double, double, double, double, double ) { - glDisable(GL_CULL_FACE); - glBindBuffer(GL_ARRAY_BUFFER, mnTileInfoBuffer); CHECK_GL_ERROR(); glEnableVertexAttribArray(mnTileInfoLocation); @@ -1586,14 +1584,9 @@ void VortexTransition::prepare( double, double, double, double, double ) CHECK_GL_ERROR(); } -void VortexTransition::finish( double, double, double, double, double ) -{ - glEnable(GL_CULL_FACE); -} - GLuint VortexTransition::makeShader() const { - return OpenGLHelper::LoadShaders( "vortexVertexShader", "vortexFragmentShader" ); + return OpenGLHelper::LoadShaders( "vortexVertexShader", "basicFragmentShader" ); } void VortexTransition::prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex ) @@ -1643,6 +1636,26 @@ void VortexTransition::prepareTransition( sal_Int32 glLeavingSlideTex, sal_Int32 CHECK_GL_ERROR(); } +void VortexTransition::displaySlides_( double nTime, sal_Int32 glLeavingSlideTex, sal_Int32 glEnteringSlideTex, double SlideWidthScale, double SlideHeightScale ) +{ + CHECK_GL_ERROR(); + applyOverallOperations( nTime, SlideWidthScale, SlideHeightScale ); + + GLint location = glGetUniformLocation( m_nProgramObject, "time" ); + if( location != -1 ) + glUniform1f( location, nTime ); + + location = glGetUniformLocation( m_nProgramObject, "slide" ); + + if( location != -1 ) + glUniform1f( location, 0.0 ); + displaySlide( nTime, glLeavingSlideTex, getScene().getLeavingSlide(), SlideWidthScale, SlideHeightScale ); + if( location != -1 ) + glUniform1f( location, 1.0 ); + displaySlide( nTime, glEnteringSlideTex, getScene().getEnteringSlide(), SlideWidthScale, SlideHeightScale ); + CHECK_GL_ERROR(); +} + std::shared_ptr<OGLTransitionImpl> makeVortexTransition(const Primitives_t& rLeavingSlidePrimitives, const Primitives_t& rEnteringSlidePrimitives, @@ -1659,7 +1672,7 @@ makeVortexTransition(const Primitives_t& rLeavingSlidePrimitives, std::shared_ptr<OGLTransitionImpl> makeVortex() { - const int NX = 40, NY = 40; + const int NX = 64, NY = 64; Primitive Slide; for (int x = 0; x < NX; x++) |