From: nds Date: Sat, 21 Mar 2020 17:13:55 +0000 (+0300) Subject: 0031457: Visualization - interface to find an active frame buffer X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=fa9ee1a41056c210cbe17016cbf1294bb5b34f56;p=occt-copy.git 0031457: Visualization - interface to find an active frame buffer --- diff --git a/src/OpenGl/OpenGl_Context.hxx b/src/OpenGl/OpenGl_Context.hxx index 4d89de5eda..96d02805bd 100644 --- a/src/OpenGl/OpenGl_Context.hxx +++ b/src/OpenGl/OpenGl_Context.hxx @@ -905,6 +905,18 @@ public: //! @name methods to alter or retrieve current state //! Bind default Vertex Array Object Standard_EXPORT void BindDefaultVao(); + //! Active Frame Buffer Object. + const Handle(OpenGl_FrameBuffer)& ActiveFrameBuffer() const + { + return myActiveFbo; + } + + //! Setup Active Frame Buffer Object. + Standard_EXPORT void SetActiveFrameBuffer (const Handle(OpenGl_FrameBuffer)& theFbo) + { + myActiveFbo = theFbo; + } + //! Default Frame Buffer Object. const Handle(OpenGl_FrameBuffer)& DefaultFrameBuffer() const { @@ -1142,6 +1154,7 @@ private: //! @name fields tracking current state //!< currently active sampler objects Standard_Integer myActiveMockTextures; //!< currently active mock sampler objects Handle(OpenGl_FrameBuffer) myDefaultFbo; //!< default Frame Buffer Object + Handle(OpenGl_FrameBuffer) myActiveFbo; //!< active Frame Buffer Object Handle(OpenGl_LineAttributes) myHatchStyles; //!< resource holding predefined hatch styles patterns Handle(OpenGl_Texture) myTextureRgbaBlack;//!< mock black texture returning (0, 0, 0, 0) Handle(OpenGl_Texture) myTextureRgbaWhite;//!< mock white texture returning (1, 1, 1, 1) diff --git a/src/OpenGl/OpenGl_FrameBuffer.cxx b/src/OpenGl/OpenGl_FrameBuffer.cxx index a05e321660..00fd8c2f84 100644 --- a/src/OpenGl/OpenGl_FrameBuffer.cxx +++ b/src/OpenGl/OpenGl_FrameBuffer.cxx @@ -692,6 +692,8 @@ void OpenGl_FrameBuffer::BindBuffer (const Handle(OpenGl_Context)& theGlCtx) { theGlCtx->arbFBO->glBindFramebuffer (GL_FRAMEBUFFER, myGlFBufferId); theGlCtx->SetFrameBufferSRGB (true); + + theGlCtx->SetActiveFrameBuffer (this); } // =======================================================================