// draw a zero to destination alpha void AppLocal::DrawScreenMask( const ovrMatrix4f & mvp, const float fadeFracX, const float fadeFracY ) { Matrix4f mvpMatrix( mvp ); glUseProgram( OverlayScreenFadeMaskProgram.program ); glUniformMatrix4fv( OverlayScreenFadeMaskProgram.uMvp, 1, GL_FALSE, mvpMatrix.Transposed().M[0] ); if ( FadedScreenMaskSquare.vertexArrayObject == 0 ) { FadedScreenMaskSquare = BuildFadedScreenMask( fadeFracX, fadeFracY ); } glColorMask( 0.0f, 0.0f, 0.0f, 1.0f ); FadedScreenMaskSquare.Draw(); glColorMask( 1.0f, 1.0f, 1.0f, 1.0f ); }
// draw a zero to destination alpha void DrawScreenMask( const ovrMatrix4f & mvp, const float fadeFracX, const float fadeFracY ) { OVR::Matrix4f mvpMatrix( mvp ); static OVR::GlProgram prog; if ( !prog.program ) { prog = OVR::BuildProgram( "uniform mat4 Mvpm;\n" "attribute vec4 VertexColor;\n" "attribute vec4 Position;\n" "varying lowp vec4 oColor;\n" "void main()\n" "{\n" " gl_Position = Mvpm * Position;\n" " oColor = vec4( 1.0, 1.0, 1.0, 1.0 - VertexColor.x );\n" "}\n" , "varying lowp vec4 oColor;\n" "void main()\n" "{\n" " gl_FragColor = oColor;\n" "}\n" ); } glUseProgram( prog.program ); glUniformMatrix4fv( prog.uMvp, 1, GL_FALSE, mvpMatrix.Transposed().M[0] ); static OVR::GlGeometry VignetteSquare; if ( VignetteSquare.vertexArrayObject == 0 ) { VignetteSquare = BuildFadedScreenMask( fadeFracX, fadeFracY ); } glColorMask( 0, 0, 0, 1 ); VignetteSquare.Draw(); glColorMask( 1, 1, 1, 1 ); }