Open CASCADE Technology
7.4.0
|
Class implements FrameBuffer Object (FBO) resource intended for off-screen rendering. More...
#include <OpenGl_FrameBuffer.hxx>
Public Member Functions | |
OpenGl_FrameBuffer () | |
Empty constructor. More... | |
virtual | ~OpenGl_FrameBuffer () |
Destructor. More... | |
virtual void | Release (OpenGl_Context *theGlCtx) override |
Destroy object - will release GPU memory if any. More... | |
GLsizei | NbSamples () const |
Number of multisampling samples. More... | |
GLsizei | NbColorBuffers () const |
Number of color buffers. More... | |
bool | HasColor () const |
Return true if FBO has been created with color attachment. More... | |
bool | HasDepth () const |
Return true if FBO has been created with depth attachment. More... | |
GLsizei | GetSizeX () const |
Textures width. More... | |
GLsizei | GetSizeY () const |
Textures height. More... | |
GLsizei | GetVPSizeX () const |
Viewport width. More... | |
GLsizei | GetVPSizeY () const |
Viewport height. More... | |
GLsizei | GetInitVPSizeX () const |
Viewport width. More... | |
GLsizei | GetInitVPSizeY () const |
Viewport height. More... | |
Standard_Boolean | IsValid () const |
Returns true if current object was initialized. More... | |
Standard_Boolean | Init (const Handle< OpenGl_Context > &theGlCtx, const GLsizei theSizeX, const GLsizei theSizeY, const OpenGl_ColorFormats &theColorFormats, const Handle< OpenGl_Texture > &theDepthStencilTexture, const GLsizei theNbSamples=0) |
Initialize FBO for rendering into single/multiple color buffer and depth textures. More... | |
Standard_Boolean | Init (const Handle< OpenGl_Context > &theGlCtx, const GLsizei theSizeX, const GLsizei theSizeY, const GLint theColorFormat, const GLint theDepthFormat, const GLsizei theNbSamples=0) |
Initialize FBO for rendering into textures. More... | |
Standard_Boolean | Init (const Handle< OpenGl_Context > &theGlCtx, const GLsizei theSizeX, const GLsizei theSizeY, const OpenGl_ColorFormats &theColorFormats, const GLint theDepthFormat, const GLsizei theNbSamples=0) |
Initialize FBO for rendering into single/multiple color buffer and depth textures. More... | |
Standard_Boolean | InitLazy (const Handle< OpenGl_Context > &theGlCtx, const GLsizei theViewportSizeX, const GLsizei theViewportSizeY, const GLint theColorFormat, const GLint theDepthFormat, const GLsizei theNbSamples=0) |
(Re-)initialize FBO with specified dimensions. More... | |
Standard_Boolean | InitLazy (const Handle< OpenGl_Context > &theGlCtx, const GLsizei theViewportSizeX, const GLsizei theViewportSizeY, const OpenGl_ColorFormats &theColorFormats, const GLint theDepthFormat, const GLsizei theNbSamples=0) |
(Re-)initialize FBO with specified dimensions. More... | |
Standard_Boolean | InitLazy (const Handle< OpenGl_Context > &theGlCtx, const OpenGl_FrameBuffer &theFbo) |
(Re-)initialize FBO with properties taken from another FBO. More... | |
Standard_Boolean | InitWithRB (const Handle< OpenGl_Context > &theGlCtx, const GLsizei theSizeX, const GLsizei theSizeY, const GLint theColorFormat, const GLint theDepthFormat, const GLuint theColorRBufferFromWindow=0) |
(Re-)initialize FBO with specified dimensions. The Render Buffer Objects will be used for Color, Depth and Stencil attachments (as opposite to textures). More... | |
Standard_Boolean | InitWrapper (const Handle< OpenGl_Context > &theGlCtx) |
Initialize class from currently bound FBO. Retrieved OpenGL objects will not be destroyed on Release. More... | |
void | SetupViewport (const Handle< OpenGl_Context > &theGlCtx) |
Setup viewport to render into FBO. More... | |
void | ChangeViewport (const GLsizei theVPSizeX, const GLsizei theVPSizeY) |
Override viewport settings. More... | |
virtual void | BindBuffer (const Handle< OpenGl_Context > &theGlCtx) |
Bind frame buffer for drawing and reading (to render into the texture). More... | |
virtual void | BindDrawBuffer (const Handle< OpenGl_Context > &theGlCtx) |
Bind frame buffer for drawing GL_DRAW_FRAMEBUFFER (to render into the texture). More... | |
virtual void | BindReadBuffer (const Handle< OpenGl_Context > &theGlCtx) |
Bind frame buffer for reading GL_READ_FRAMEBUFFER. More... | |
virtual void | UnbindBuffer (const Handle< OpenGl_Context > &theGlCtx) |
Unbind frame buffer. More... | |
const Handle< OpenGl_Texture > & | ColorTexture (const GLint theColorBufferIndex=0) const |
Returns the color texture for the given color buffer index. More... | |
const Handle< OpenGl_Texture > & | DepthStencilTexture () const |
Returns the depth-stencil texture. More... | |
GLuint | ColorRenderBuffer () const |
Returns the color Render Buffer. More... | |
GLuint | DepthStencilRenderBuffer () const |
Returns the depth Render Buffer. More... | |
virtual Standard_Size | EstimatedDataSize () const override |
Returns estimated GPU memory usage for holding data without considering overheads and allocation alignment rules. More... | |
Public Member Functions inherited from OpenGl_Resource | |
OpenGl_Resource () | |
Empty constructor. More... | |
virtual | ~OpenGl_Resource () |
Destructor. Inheritors should call Clean (NULL) within it. More... | |
Public Member Functions inherited from Standard_Transient | |
Standard_Transient () | |
Empty constructor. More... | |
Standard_Transient (const Standard_Transient &) | |
Copy constructor – does nothing. More... | |
Standard_Transient & | operator= (const Standard_Transient &) |
Assignment operator, needed to avoid copying reference counter. More... | |
virtual | ~Standard_Transient () |
Destructor must be virtual. More... | |
virtual void | Delete () const |
Memory deallocator for transient classes. More... | |
virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
Returns a type descriptor about this object. More... | |
Standard_Boolean | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
Returns a true value if this is an instance of Type. More... | |
Standard_Boolean | IsInstance (const Standard_CString theTypeName) const |
Returns a true value if this is an instance of TypeName. More... | |
Standard_Boolean | IsKind (const opencascade::handle< Standard_Type > &theType) const |
Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism. More... | |
Standard_Boolean | IsKind (const Standard_CString theTypeName) const |
Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism. More... | |
Standard_Transient * | This () const |
Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero. More... | |
Standard_Integer | GetRefCount () const |
Get the reference counter of this object. More... | |
void | IncrementRefCounter () const |
Increments the reference counter of this object. More... | |
Standard_Integer | DecrementRefCounter () const |
Decrements the reference counter of this object; returns the decremented value. More... | |
Static Public Member Functions | |
static Standard_Boolean | BufferDump (const Handle< OpenGl_Context > &theGlCtx, const Handle< OpenGl_FrameBuffer > &theFbo, Image_PixMap &theImage, Graphic3d_BufferType theBufferType) |
Dump content into image. More... | |
Static Public Member Functions inherited from Standard_Transient | |
static const char * | get_type_name () |
Returns a type descriptor about this object. More... | |
static const opencascade::handle< Standard_Type > & | get_type_descriptor () |
Returns type descriptor of Standard_Transient class. More... | |
Static Public Attributes | |
static const GLuint | NO_FRAMEBUFFER = 0 |
Helpful constants. More... | |
static const GLuint | NO_RENDERBUFFER = 0 |
Protected Types | |
typedef NCollection_Vector< Handle< OpenGl_Texture > > | OpenGl_TextureArray |
Protected Member Functions | |
Standard_Boolean | isValidFrameBuffer () const |
Static Protected Member Functions | |
static bool | getDepthDataFormat (GLint theTextFormat, GLenum &thePixelFormat, GLenum &theDataType) |
Determine data type from texture sized format. More... | |
static bool | getColorDataFormat (const Handle< OpenGl_Context > &theCtx, GLint theTextFormat, GLenum &thePixelFormat, GLenum &theDataType) |
Determine data type from texture sized format. More... | |
Protected Attributes | |
GLsizei | myInitVPSizeX |
viewport width specified during initialization (kept even on failure) More... | |
GLsizei | myInitVPSizeY |
viewport height specified during initialization (kept even on failure) More... | |
GLsizei | myVPSizeX |
viewport width (should be <= texture width) More... | |
GLsizei | myVPSizeY |
viewport height (should be <= texture height) More... | |
GLsizei | myNbSamples |
number of MSAA samples More... | |
OpenGl_ColorFormats | myColorFormats |
sized format for color texture, GL_RGBA8 by default More... | |
GLint | myDepthFormat |
sized format for depth-stencil texture, GL_DEPTH24_STENCIL8 by default More... | |
GLuint | myGlFBufferId |
FBO object ID. More... | |
GLuint | myGlColorRBufferId |
color Render Buffer object (alternative to myColorTexture) More... | |
GLuint | myGlDepthRBufferId |
depth-stencil Render Buffer object (alternative to myDepthStencilTexture) More... | |
bool | myIsOwnBuffer |
flag indicating that FBO should be deallocated by this class More... | |
bool | myIsOwnDepth |
flag indicating that FBO should be deallocated by this class More... | |
OpenGl_TextureArray | myColorTextures |
color texture objects More... | |
Handle< OpenGl_Texture > | myDepthStencilTexture |
depth-stencil texture object More... | |
Additional Inherited Members | |
Public Types inherited from Standard_Transient | |
typedef void | base_type |
Returns a type descriptor about this object. More... | |
Class implements FrameBuffer Object (FBO) resource intended for off-screen rendering.
|
protected |
OpenGl_FrameBuffer::OpenGl_FrameBuffer | ( | ) |
Empty constructor.
|
virtual |
Destructor.
|
virtual |
Bind frame buffer for drawing and reading (to render into the texture).
|
virtual |
Bind frame buffer for drawing GL_DRAW_FRAMEBUFFER (to render into the texture).
|
virtual |
Bind frame buffer for reading GL_READ_FRAMEBUFFER.
|
static |
Dump content into image.
theGlCtx | bound OpenGL context |
theFbo | FBO to dump (or window buffer, if NULL) |
theImage | target image |
theBufferType | buffer type (attachment) to dump |
void OpenGl_FrameBuffer::ChangeViewport | ( | const GLsizei | theVPSizeX, |
const GLsizei | theVPSizeY | ||
) |
Override viewport settings.
|
inline |
Returns the color Render Buffer.
|
inline |
Returns the color texture for the given color buffer index.
|
inline |
Returns the depth Render Buffer.
|
inline |
Returns the depth-stencil texture.
|
overridevirtual |
Returns estimated GPU memory usage for holding data without considering overheads and allocation alignment rules.
Implements OpenGl_Resource.
|
staticprotected |
Determine data type from texture sized format.
|
staticprotected |
Determine data type from texture sized format.
|
inline |
Viewport width.
|
inline |
Viewport height.
|
inline |
Textures width.
|
inline |
Textures height.
|
inline |
Viewport width.
|
inline |
Viewport height.
|
inline |
Return true if FBO has been created with color attachment.
|
inline |
Return true if FBO has been created with depth attachment.
Standard_Boolean OpenGl_FrameBuffer::Init | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const GLsizei | theSizeX, | ||
const GLsizei | theSizeY, | ||
const OpenGl_ColorFormats & | theColorFormats, | ||
const Handle< OpenGl_Texture > & | theDepthStencilTexture, | ||
const GLsizei | theNbSamples = 0 |
||
) |
Initialize FBO for rendering into single/multiple color buffer and depth textures.
theGlCtx | currently bound OpenGL context |
theSizeX | texture width |
theSizeY | texture height |
theColorFormats | list of color texture sized format (0 means no color attachment), e.g. GL_RGBA8 |
theDepthStencilTexture | depth-stencil texture |
theNbSamples | MSAA number of samples (0 means normal texture) |
Standard_Boolean OpenGl_FrameBuffer::Init | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const GLsizei | theSizeX, | ||
const GLsizei | theSizeY, | ||
const GLint | theColorFormat, | ||
const GLint | theDepthFormat, | ||
const GLsizei | theNbSamples = 0 |
||
) |
Initialize FBO for rendering into textures.
theGlCtx | currently bound OpenGL context |
theSizeX | texture width |
theSizeY | texture height |
theColorFormat | color texture sized format (0 means no color attachment), e.g. GL_RGBA8 |
theDepthFormat | depth-stencil texture sized format (0 means no depth attachment), e.g. GL_DEPTH24_STENCIL8 |
theNbSamples | MSAA number of samples (0 means normal texture) |
Standard_Boolean OpenGl_FrameBuffer::Init | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const GLsizei | theSizeX, | ||
const GLsizei | theSizeY, | ||
const OpenGl_ColorFormats & | theColorFormats, | ||
const GLint | theDepthFormat, | ||
const GLsizei | theNbSamples = 0 |
||
) |
Initialize FBO for rendering into single/multiple color buffer and depth textures.
theGlCtx | currently bound OpenGL context |
theSizeX | texture width |
theSizeY | texture height |
theColorFormats | list of color texture sized format (0 means no color attachment), e.g. GL_RGBA8 |
theDepthFormat | depth-stencil texture sized format (0 means no depth attachment), e.g. GL_DEPTH24_STENCIL8 |
theNbSamples | MSAA number of samples (0 means normal texture) |
Standard_Boolean OpenGl_FrameBuffer::InitLazy | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const GLsizei | theViewportSizeX, | ||
const GLsizei | theViewportSizeY, | ||
const GLint | theColorFormat, | ||
const GLint | theDepthFormat, | ||
const GLsizei | theNbSamples = 0 |
||
) |
(Re-)initialize FBO with specified dimensions.
Standard_Boolean OpenGl_FrameBuffer::InitLazy | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const GLsizei | theViewportSizeX, | ||
const GLsizei | theViewportSizeY, | ||
const OpenGl_ColorFormats & | theColorFormats, | ||
const GLint | theDepthFormat, | ||
const GLsizei | theNbSamples = 0 |
||
) |
(Re-)initialize FBO with specified dimensions.
|
inline |
(Re-)initialize FBO with properties taken from another FBO.
Standard_Boolean OpenGl_FrameBuffer::InitWithRB | ( | const Handle< OpenGl_Context > & | theGlCtx, |
const GLsizei | theSizeX, | ||
const GLsizei | theSizeY, | ||
const GLint | theColorFormat, | ||
const GLint | theDepthFormat, | ||
const GLuint | theColorRBufferFromWindow = 0 |
||
) |
(Re-)initialize FBO with specified dimensions. The Render Buffer Objects will be used for Color, Depth and Stencil attachments (as opposite to textures).
theGlCtx | currently bound OpenGL context |
theSizeX | render buffer width |
theSizeY | render buffer height |
theColorFormat | color render buffer sized format, e.g. GL_RGBA8 |
theDepthFormat | depth-stencil render buffer sized format, e.g. GL_DEPTH24_STENCIL8 |
theColorRBufferFromWindow | when specified - should be ID of already initialized RB object, which will be released within this class |
Standard_Boolean OpenGl_FrameBuffer::InitWrapper | ( | const Handle< OpenGl_Context > & | theGlCtx | ) |
Initialize class from currently bound FBO. Retrieved OpenGL objects will not be destroyed on Release.
|
inline |
Returns true if current object was initialized.
|
inlineprotected |
|
inline |
Number of color buffers.
|
inline |
Number of multisampling samples.
|
overridevirtual |
Destroy object - will release GPU memory if any.
Implements OpenGl_Resource.
void OpenGl_FrameBuffer::SetupViewport | ( | const Handle< OpenGl_Context > & | theGlCtx | ) |
Setup viewport to render into FBO.
|
virtual |
Unbind frame buffer.
|
protected |
sized format for color texture, GL_RGBA8 by default
|
protected |
color texture objects
|
protected |
sized format for depth-stencil texture, GL_DEPTH24_STENCIL8 by default
|
protected |
depth-stencil texture object
|
protected |
color Render Buffer object (alternative to myColorTexture)
|
protected |
depth-stencil Render Buffer object (alternative to myDepthStencilTexture)
|
protected |
FBO object ID.
|
protected |
viewport width specified during initialization (kept even on failure)
|
protected |
viewport height specified during initialization (kept even on failure)
|
protected |
flag indicating that FBO should be deallocated by this class
|
protected |
flag indicating that FBO should be deallocated by this class
|
protected |
number of MSAA samples
|
protected |
viewport width (should be <= texture width)
|
protected |
viewport height (should be <= texture height)
|
static |
Helpful constants.
|
static |