Open CASCADE Technology
7.0.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... | |
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... | |
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 GLint theColorFormat, const GLint theDepthFormat, const GLsizei theNbSamples=0) |
Initialize FBO for rendering into 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 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 |
Returns the color texture. 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... | |
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 Attributes | |
static const GLuint | NO_FRAMEBUFFER = 0 |
Helpful constants. More... | |
static const GLuint | NO_RENDERBUFFER = 0 |
Protected Member Functions | |
Standard_Boolean | isValidFrameBuffer () const |
Protected Attributes | |
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... | |
GLint | myColorFormat |
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... | |
Handle< OpenGl_Texture > | myColorTexture |
color texture object 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... | |
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... | |
Class implements FrameBuffer Object (FBO) resource intended for off-screen rendering.
OpenGl_FrameBuffer::OpenGl_FrameBuffer | ( | ) |
Empty constructor.
|
virtual |
Destructor.
|
virtual |
Bind frame buffer for drawing and reading (to render into the texture).
Reimplemented in D3DHost_FrameBuffer.
|
virtual |
Bind frame buffer for drawing GL_DRAW_FRAMEBUFFER (to render into the texture).
|
virtual |
Bind frame buffer for reading GL_READ_FRAMEBUFFER.
void OpenGl_FrameBuffer::ChangeViewport | ( | const GLsizei | theVPSizeX, |
const GLsizei | theVPSizeY | ||
) |
Override viewport settings.
|
inline |
Returns the color Render Buffer.
|
inline |
Returns the color texture.
|
inline |
Returns the depth Render Buffer.
|
inline |
Returns the depth-stencil texture.
|
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 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::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.
|
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 multisampling samples.
|
overridevirtual |
Destroy object - will release GPU memory if any.
Implements OpenGl_Resource.
Reimplemented in D3DHost_FrameBuffer.
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 object
|
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 |
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 |