You.i Engine
CYIGLFramebufferObject Class Reference

Detailed Description

IYIGPUObject implementation for OpenGL Framebuffers.

#include <renderer/YiGLFramebufferObject.h>

Inheritance diagram for CYIGLFramebufferObject:

Public Member Functions

 CYIGLFramebufferObject (bool screenBuffer=false)
virtual ~CYIGLFramebufferObject ()
virtual void Load (const std::shared_ptr< CYIAssetHardware > &pAsset) override
virtual void Unload () override
virtual void Use () const override
bool HasDepthStencil () const
bool HasColor () const
- Public Member Functions inherited from CYIGLAbstractBufferObject
 CYIGLAbstractBufferObject (GLuint handle)
virtual ~CYIGLAbstractBufferObject ()
virtual void SetTarget (GLenum target)
virtual GLenum GetTarget ()
virtual GLuint GetHandle ()
- Public Member Functions inherited from CYIBufferObject
 CYIBufferObject ()
virtual ~CYIBufferObject ()
virtual void * Map ()
virtual void Unmap (size_t size)
- Public Member Functions inherited from IYIGPUObject
 IYIGPUObject ()
virtual ~IYIGPUObject ()
Status GetStatus () const

Protected Member Functions

virtual void Generate () override
virtual void Free () override
virtual void InvalidateHandle () override

Protected Attributes

bool m_hasColor
bool m_hasDepthStencil
bool m_screenBuffer
bool m_platformSupportsDepthTextures
bool m_platformSupportsPackedDepthStencil
GLuint m_depthBufferId
- Protected Attributes inherited from CYIGLAbstractBufferObject
GLuint m_handle
GLenum m_target
- Protected Attributes inherited from IYIGPUObject
Status m_status

Additional Inherited Members

- Public Types inherited from IYIGPUObject
enum  Status {

Constructor & Destructor Documentation

◆ CYIGLFramebufferObject()

CYIGLFramebufferObject::CYIGLFramebufferObject ( bool  screenBuffer = false)

Upon creation, a framebuffer will generate a valid handle in graphics memory

screenBuffer is a boolean flag indicating whether the framebuffer represents the screen.

◆ ~CYIGLFramebufferObject()

virtual CYIGLFramebufferObject::~CYIGLFramebufferObject ( )

Upon deletion, a framebuffer will free all of its memory and invalidate its handle.

The textures contained inside the FBO are managed separately, only the FBO will be destroyed

Member Function Documentation

◆ Free()

virtual void CYIGLFramebufferObject::Free ( )

Deallocates the GPU memory associated with this object.

Implements IYIGPUObject.

◆ Generate()

virtual void CYIGLFramebufferObject::Generate ( )

Generates a valid handle. No GPU memory is allocated until Load() is called.

Implements IYIGPUObject.

◆ HasColor()

bool CYIGLFramebufferObject::HasColor ( ) const

◆ HasDepthStencil()

bool CYIGLFramebufferObject::HasDepthStencil ( ) const

◆ InvalidateHandle()

virtual void CYIGLFramebufferObject::InvalidateHandle ( )

This function can be called to invalidate the buffer handle without freeing the associated memory.

This can be used if the GL context is lost and GPU memory is freed implicitly. Calling Free() on this object will result in a crash if the handle is no longer pointing to valid memory, and a new handle may not be created with Generate() if the current handle is valid. This function allows you to inform the buffer object that the GL data has been freed externally and that the handle should be disconnected.

Calling this function without being sure that the handle has been freed in GPU memory will result in a memory leak. Use at your own risk.

Implements IYIGPUObject.

◆ Load()

virtual void CYIGLFramebufferObject::Load ( const std::shared_ptr< CYIAssetHardware > &  pHWAsset)

Loads the software data from the associated CYIAsset into graphics memory. If the Status is LOADED_FRESH upon a call to load, meaning that data was previously successfully loaded, the status may become LOADED_STALE in the case where this load failed. See the Status documentation for more details.

Implements IYIGPUObject.

◆ Unload()

virtual void CYIGLFramebufferObject::Unload ( )

Frees any previously loaded data from video memory, but retains the handle.

Implements IYIGPUObject.

◆ Use()

virtual void CYIGLFramebufferObject::Use ( ) const

Makes the GPU Object active, called by the renderer

Implements IYIGPUObject.

Member Data Documentation

◆ m_depthBufferId

GLuint CYIGLFramebufferObject::m_depthBufferId

◆ m_hasColor

bool CYIGLFramebufferObject::m_hasColor

◆ m_hasDepthStencil

bool CYIGLFramebufferObject::m_hasDepthStencil

◆ m_platformSupportsDepthTextures

bool CYIGLFramebufferObject::m_platformSupportsDepthTextures

◆ m_platformSupportsPackedDepthStencil

bool CYIGLFramebufferObject::m_platformSupportsPackedDepthStencil

◆ m_screenBuffer

bool CYIGLFramebufferObject::m_screenBuffer

The documentation for this class was generated from the following file: