0026915: Visualization - return Handle from Graphic3d_CView::FBOCreate() instead...
[occt.git] / src / OpenGl / OpenGl_View.hxx
index b256b4e..0cb0759 100644 (file)
@@ -129,10 +129,12 @@ public:
                                           const Aspect_RenderingContext theContext) Standard_OVERRIDE;
 
   //! Returns window associated with the view.
-  virtual Handle(Aspect_Window) Window() const Standard_OVERRIDE { return myWindow->PlatformWindow(); }
+  virtual Handle(Aspect_Window) Window() const Standard_OVERRIDE
+  { return myWindow->PlatformWindow(); }
 
   //! Returns True if the window associated to the view is defined.
-  virtual Standard_Boolean IsDefined() const { return !myWindow.IsNull(); }
+  virtual Standard_Boolean IsDefined() const Standard_OVERRIDE
+  { return !myWindow.IsNull(); }
 
   //! Handle changing size of the rendering window.
   Standard_EXPORT virtual void Resized() Standard_OVERRIDE;
@@ -147,7 +149,7 @@ public:
   Standard_EXPORT virtual void Invalidate() Standard_OVERRIDE;
 
   //! Return true if view content cache has been invalidated.
-  virtual Standard_Boolean IsInvalidated() Standard_OVERRIDE { return myBackBufferRestored; }
+  virtual Standard_Boolean IsInvalidated() Standard_OVERRIDE { return !myBackBufferRestored; }
 
   //! Displays z-buffer trihedron.
   Standard_EXPORT virtual void TriedronDisplay (const Aspect_TypeOfTriedronPosition thePosition = Aspect_TOTP_CENTER,
@@ -170,7 +172,8 @@ public:
   Standard_EXPORT virtual void TriedronEcho (const Aspect_TypeOfTriedronEcho theType = Aspect_TOTE_NONE) Standard_OVERRIDE;
 
   //! Returns data of a graduated trihedron
-  const Graphic3d_GraduatedTrihedron& GetGraduatedTrihedron() { return myGTrihedronData; }
+  const Graphic3d_GraduatedTrihedron& GetGraduatedTrihedron() Standard_OVERRIDE
+  { return myGTrihedronData; }
 
   //! Displays Graduated Trihedron.
   Standard_EXPORT virtual void GraduatedTrihedronDisplay (const Graphic3d_GraduatedTrihedron& theTrihedronData) Standard_OVERRIDE;
@@ -230,28 +233,28 @@ public:
                                                   const Graphic3d_ZLayerSettings& theSettings) Standard_OVERRIDE;
 
   //! Returns pointer to an assigned framebuffer object.
-  Standard_EXPORT virtual Graphic3d_PtrFrameBuffer FBO() const Standard_OVERRIDE;
+  Standard_EXPORT virtual Handle(Standard_Transient) FBO() const Standard_OVERRIDE;
 
   //! Sets framebuffer object for offscreen rendering.
-  Standard_EXPORT virtual void SetFBO (const Graphic3d_PtrFrameBuffer theFBO) Standard_OVERRIDE;
+  Standard_EXPORT virtual void SetFBO (const Handle(Standard_Transient)& theFbo) Standard_OVERRIDE;
 
   //! Generate offscreen FBO in the graphic library.
   //! If not supported on hardware returns NULL.
-  Standard_EXPORT virtual Graphic3d_PtrFrameBuffer FBOCreate (const Standard_Integer theWidth,
-                                                              const Standard_Integer theHeight) Standard_OVERRIDE;
+  Standard_EXPORT virtual Handle(Standard_Transient) FBOCreate (const Standard_Integer theWidth,
+                                                                const Standard_Integer theHeight) Standard_OVERRIDE;
 
   //! Remove offscreen FBO from the graphic library
-  Standard_EXPORT virtual void FBORelease (Graphic3d_PtrFrameBuffer& theFBOPtr) Standard_OVERRIDE;
+  Standard_EXPORT virtual void FBORelease (Handle(Standard_Transient)& theFbo) Standard_OVERRIDE;
 
   //! Read offscreen FBO configuration.
-  Standard_EXPORT virtual void FBOGetDimensions (const Graphic3d_PtrFrameBuffer theFBOPtr,
+  Standard_EXPORT virtual void FBOGetDimensions (const Handle(Standard_Transient)& theFbo,
                                                  Standard_Integer& theWidth,
                                                  Standard_Integer& theHeight,
                                                  Standard_Integer& theWidthMax,
                                                  Standard_Integer& theHeightMax) Standard_OVERRIDE;
 
   //! Change offscreen FBO viewport.
-  Standard_EXPORT virtual void FBOChangeViewport (Graphic3d_PtrFrameBuffer& theFBOPtr,
+  Standard_EXPORT virtual void FBOChangeViewport (const Handle(Standard_Transient)& theFbo,
                                                   const Standard_Integer theWidth,
                                                   const Standard_Integer theHeight) Standard_OVERRIDE;
 
@@ -545,7 +548,7 @@ private:
   OpenGl_VertexBuffer* initBlitQuad (const Standard_Boolean theToFlip);
 
   //! Blend together views pair into stereo image.
-  void drawStereoPair();
+  void drawStereoPair (OpenGl_FrameBuffer* theDrawFbo);
 
 protected:
 
@@ -566,7 +569,7 @@ protected:
   OPENGL_ZCLIP                    myZClip;
   Graphic3d_SequenceOfHClipPlane  myClipPlanes;
   Handle(Graphic3d_Camera)        myCamera;
-  OpenGl_FrameBuffer*             myFBO;
+  Handle(OpenGl_FrameBuffer)      myFBO;
   Standard_Boolean                myUseGLLight;
   Standard_Boolean                myToShowTrihedron;
   Standard_Boolean                myToShowGradTrihedron;
@@ -599,6 +602,8 @@ protected: //! @name Rendering properties
 
   //! Two framebuffers (left and right views) store cached main presentation
   //! of the view (without presentation of immediate layers).
+  GLint                      myFboColorFormat;        //!< sized format for color attachments
+  GLint                      myFboDepthFormat;        //!< sized format for depth-stencil attachments
   Handle(OpenGl_FrameBuffer) myMainSceneFbos[2];
   Handle(OpenGl_FrameBuffer) myImmediateSceneFbos[2]; //!< Additional buffers for immediate layer in stereo mode.
   OpenGl_VertexBuffer        myFullScreenQuad;        //!< Vertices for full-screen quad rendering.
@@ -837,7 +842,7 @@ protected: //! @name methods related to ray-tracing
   //! Adds OpenGL groups to ray-traced scene geometry.
   Standard_Boolean addRaytraceGroups (const OpenGl_Structure*        theStructure,
                                       const OpenGl_RaytraceMaterial& theStructMat,
-                                      const Standard_ShortReal*      theTransform,
+                                      const Graphic3d_Mat4*          theTransform,
                                       const Handle(OpenGl_Context)&  theGlContext);
 
   //! Creates ray-tracing material properties.
@@ -1034,6 +1039,7 @@ protected: //! @name fields related to ray-tracing
   Handle(OpenGl_FrameBuffer) myRaytraceFBO2[2];
   //! Framebuffer (FBO) for preliminary OpenGL output.
   Handle(OpenGl_FrameBuffer) myOpenGlFBO;
+  Handle(OpenGl_FrameBuffer) myOpenGlFBO2;
 
   //! Vertex buffer (VBO) for drawing dummy quad.
   OpenGl_VertexBuffer myRaytraceScreenQuad;