Crazy Eddie's GUI System  0.8.7
CEGUI::OpenGLRendererBase Class Referenceabstract

Common base class used for other OpenGL (desktop or ES) based renderer modules. More...

+ Inheritance diagram for CEGUI::OpenGLRendererBase:
+ Collaboration diagram for CEGUI::OpenGLRendererBase:

Public Member Functions

RenderTargetgetDefaultRenderTarget ()
 Returns the default RenderTarget object. The default render target is is typically one that targets the entire screen (or rendering window). More...
 
GeometryBuffercreateGeometryBuffer ()
 Create a new GeometryBuffer and return a reference to it. You should remove the GeometryBuffer from any RenderQueues and call destroyGeometryBuffer when you want to destroy the GeometryBuffer. More...
 
void destroyGeometryBuffer (const GeometryBuffer &buffer)
 Destroy a GeometryBuffer that was returned when calling the createGeometryBuffer function. Before destroying any GeometryBuffer you should ensure that it has been removed from any RenderQueue that was using it. More...
 
void destroyAllGeometryBuffers ()
 Destroy all GeometryBuffer objects created by this Renderer.
 
TextureTargetcreateTextureTarget ()
 Create a TextureTarget that can be used to cache imagery; this is a RenderTarget that does not lose it's content from one frame to another. More...
 
void destroyTextureTarget (TextureTarget *target)
 Function that cleans up TextureTarget objects created with the createTextureTarget function. More...
 
void destroyAllTextureTargets ()
 Destory all TextureTarget objects created by this Renderer.
 
TexturecreateTexture (const String &name)
 Create a 'null' Texture object. More...
 
TexturecreateTexture (const String &name, const String &filename, const String &resourceGroup)
 Create a Texture object using the given image file. More...
 
TexturecreateTexture (const String &name, const Sizef &size)
 Create a Texture object with the given pixel dimensions as specified by size. More...
 
void destroyTexture (Texture &texture)
 Destroy a Texture object that was previously created by calling the createTexture functions. More...
 
void destroyTexture (const String &name)
 Destroy a Texture object that was previously created by calling the createTexture functions. More...
 
void destroyAllTextures ()
 Destroy all Texture objects created by this Renderer.
 
TexturegetTexture (const String &name) const
 Return a Texture object that was previously created by calling the createTexture functions. More...
 
bool isTextureDefined (const String &name) const
 Return whether a texture with the given name exists.
 
void setDisplaySize (const Sizef &sz)
 Set the size of the display or host window in pixels for this Renderer object. More...
 
const SizefgetDisplaySize () const
 Return the size of the display or host window in pixels. More...
 
const Vector2fgetDisplayDPI () const
 Return the resolution of the display or host window in dots per inch. More...
 
uint getMaxTextureSize () const
 Return the pixel size of the maximum supported texture. More...
 
const StringgetIdentifierString () const
 Return identification string for the renderer module. More...
 
TexturecreateTexture (const String &name, GLuint tex, const Sizef &sz)
 Create a texture that uses an existing OpenGL texture with the specified size. Note that it is your responsibility to ensure that the OpenGL texture is valid and that the specified size is accurate. More...
 
void enableExtraStateSettings (bool setting)
 Tells the renderer to initialise some extra states beyond what it directly needs itself for CEGUI. More...
 
void grabTextures ()
 Grabs all the loaded textures from Texture RAM and stores them in a local data buffer. This function invalidates all textures, and restoreTextures must be called before any CEGUI rendering is done for predictable results.
 
void restoreTextures ()
 Restores all the loaded textures from the local data buffers previously created by 'grabTextures'.
 
virtual Sizef getAdjustedTextureSize (const Sizef &sz) const
 Helper to return a valid texture size according to reported OpenGL capabilities. More...
 
virtual void setupRenderingBlendMode (const BlendMode mode, const bool force=false)=0
 set the render states for the specified BlendMode.
 
virtual bool isS3TCSupported () const =0
 
virtual const mat4PimplgetViewProjectionMatrix ()
 Helper to return view projection matrix. More...
 
virtual void setViewProjectionMatrix (const mat4Pimpl *viewProjectionMatrix)
 Helper to set the view projection matrix. More...
 
const CEGUI::RectfgetActiveViewPort ()
 Helper to get the viewport. More...
 
void setActiveRenderTarget (RenderTarget *renderTarget)
 Helper to set the active render target. More...
 
RenderTargetgetActiveRenderTarget ()
 Helper to get the active render target. More...
 
bool isTexCoordSystemFlipped () const
 Returns if the texture coordinate system is vertically flipped or not. The original of a texture coordinate system is typically located either at the the top-left or the bottom-left. CEGUI, Direct3D and most rendering engines assume it to be on the top-left. OpenGL assumes it to be at the bottom left. More...
 
- Public Member Functions inherited from CEGUI::Renderer
virtual void beginRendering ()=0
 Perform any operations required to put the system into a state ready for rendering operations to begin.
 
virtual void endRendering ()=0
 Perform any operations required to finalise rendering.
 
virtual ~Renderer ()
 Destructor.
 

Static Public Member Functions

static float getNextPOTSize (const float f)
 Utility function that will return f if it's a power of two, or the next power of two up from f if it's not.
 

Protected Types

typedef std::vector< TextureTarget * > TextureTargetList
 container type used to hold TextureTargets we create.
 
typedef std::vector< OpenGLGeometryBufferBase * > GeometryBufferList
 container type used to hold GeometryBuffers created.
 
typedef std::map< String, OpenGLTexture *, StringFastLessCompare CEGUI_MAP_ALLOC(String, OpenGLTexture *)> TextureMap
 container type used to hold Textures we create.
 

Protected Member Functions

 OpenGLRendererBase (const Sizef &display_size)
 Constructor. More...
 
 OpenGLRendererBase (bool set_glew_experimental)
 
 OpenGLRendererBase (const Sizef &display_size, bool set_glew_experimental)
 Constructor. More...
 
void init (bool init_glew=false, bool set_glew_experimental=false)
 
virtual ~OpenGLRendererBase ()
 Destructor!
 
void initialiseMaxTextureSize ()
 helper to set (rough) max texture size.
 
void initialiseDisplaySizeWithViewportSize ()
 helper to set display size with current viewport size.
 
virtual OpenGLGeometryBufferBasecreateGeometryBuffer_impl ()=0
 return some appropriate OpenGLGeometryBufferBase subclass instance.
 
virtual TextureTargetcreateTextureTarget_impl ()=0
 return some appropriate TextureTarget subclass instance.
 

Static Protected Member Functions

static void logTextureCreation (const String &name)
 helper to safely log the creation of a named texture
 
static void logTextureDestruction (const String &name)
 helper to safely log the destruction of a named texture
 

Protected Attributes

Sizef d_displaySize
 What the renderer considers to be the current display size.
 
Vector2f d_displayDPI
 What the renderer considers to be the current display DPI resolution.
 
RenderTargetd_defaultTarget
 The default RenderTarget.
 
TextureTargetList d_textureTargets
 Container used to track texture targets.
 
GeometryBufferList d_geometryBuffers
 Container used to track geometry buffers.
 
TextureMap d_textures
 Container used to track textures.
 
uint d_maxTextureSize
 What the renderer thinks the max texture size is.
 
bool d_initExtraStates
 option of whether to initialise extra states that may not be at default
 
BlendMode d_activeBlendMode
 What blend mode we think is active.
 
mat4Pimpld_viewProjectionMatrix
 View projection matrix.
 
RenderTargetd_activeRenderTarget
 The active RenderTarget.
 

Static Protected Attributes

static String d_rendererID
 String holding the renderer identification text.
 

Detailed Description

Common base class used for other OpenGL (desktop or ES) based renderer modules.

Constructor & Destructor Documentation

CEGUI::OpenGLRendererBase::OpenGLRendererBase ( const Sizef display_size)
protected

Constructor.

Parameters
display_sizeSize object describing the initial display resolution.
CEGUI::OpenGLRendererBase::OpenGLRendererBase ( const Sizef display_size,
bool  set_glew_experimental 
)
protected

Constructor.

Parameters
display_sizeSize object describing the initial display resolution.
set_glew_experimentalIf true, set "glewExperimental = GL_TRUE" before calling "glewInit".

Member Function Documentation

GeometryBuffer& CEGUI::OpenGLRendererBase::createGeometryBuffer ( )
virtual

Create a new GeometryBuffer and return a reference to it. You should remove the GeometryBuffer from any RenderQueues and call destroyGeometryBuffer when you want to destroy the GeometryBuffer.

Returns
GeometryBuffer object.

Implements CEGUI::Renderer.

Texture& CEGUI::OpenGLRendererBase::createTexture ( const String name)
virtual

Create a 'null' Texture object.

Parameters
nameString holding the name for the new texture. Texture names must be unique within the Renderer.
Returns
A newly created Texture object. The returned Texture object has no size or imagery associated with it.

Implements CEGUI::Renderer.

Texture& CEGUI::OpenGLRendererBase::createTexture ( const String name,
const String filename,
const String resourceGroup 
)
virtual

Create a Texture object using the given image file.

Parameters
nameString holding the name for the new texture. Texture names must be unique within the Renderer.
filenameString object that specifies the path and filename of the image file to use when creating the texture.
resourceGroupString objet that specifies the resource group identifier to be passed to the resource provider when loading the texture file filename.
Returns
A newly created Texture object. The initial content of the texture memory is the requested image file.
Note
Due to possible limitations of the underlying hardware, API or engine, the final size of the texture may not match the size of the loaded file. You can check the ultimate sizes by querying the Texture object after creation.

Implements CEGUI::Renderer.

Texture& CEGUI::OpenGLRendererBase::createTexture ( const String name,
const Sizef size 
)
virtual

Create a Texture object with the given pixel dimensions as specified by size.

Parameters
nameString holding the name for the new texture. Texture names must be unique within the Renderer.
sizeSize object that describes the desired texture size.
Returns
A newly created Texture object. The initial contents of the texture memory is undefined.
Note
Due to possible limitations of the underlying hardware, API or engine, the final size of the texture may not match the requested size. You can check the ultimate sizes by querying the Texture object after creation.

Implements CEGUI::Renderer.

Texture& CEGUI::OpenGLRendererBase::createTexture ( const String name,
GLuint  tex,
const Sizef sz 
)

Create a texture that uses an existing OpenGL texture with the specified size. Note that it is your responsibility to ensure that the OpenGL texture is valid and that the specified size is accurate.

Parameters
szSize object that describes the pixel size of the OpenGL texture identified by tex.
nameString holding the name for the new texture. Texture names must be unique within the Renderer.
Returns
Texture object that wraps the OpenGL texture tex, and whose size is specified to be sz.
TextureTarget* CEGUI::OpenGLRendererBase::createTextureTarget ( )
virtual

Create a TextureTarget that can be used to cache imagery; this is a RenderTarget that does not lose it's content from one frame to another.

If the renderer is unable to offer such a thing, 0 should be returned.

Returns
Pointer to a TextureTarget object that is suitable for caching imagery, or 0 if the renderer is unable to offer such a thing.

Implements CEGUI::Renderer.

void CEGUI::OpenGLRendererBase::destroyGeometryBuffer ( const GeometryBuffer buffer)
virtual

Destroy a GeometryBuffer that was returned when calling the createGeometryBuffer function. Before destroying any GeometryBuffer you should ensure that it has been removed from any RenderQueue that was using it.

Parameters
bufferThe GeometryBuffer object to be destroyed.

Implements CEGUI::Renderer.

void CEGUI::OpenGLRendererBase::destroyTexture ( Texture texture)
virtual

Destroy a Texture object that was previously created by calling the createTexture functions.

Parameters
textureTexture object to be destroyed.

Implements CEGUI::Renderer.

void CEGUI::OpenGLRendererBase::destroyTexture ( const String name)
virtual

Destroy a Texture object that was previously created by calling the createTexture functions.

Parameters
nameString holding the name of the texture to destroy.

Implements CEGUI::Renderer.

void CEGUI::OpenGLRendererBase::destroyTextureTarget ( TextureTarget target)
virtual

Function that cleans up TextureTarget objects created with the createTextureTarget function.

Parameters
targetA pointer to a TextureTarget object that was previously returned from a call to createTextureTarget.

Implements CEGUI::Renderer.

void CEGUI::OpenGLRendererBase::enableExtraStateSettings ( bool  setting)

Tells the renderer to initialise some extra states beyond what it directly needs itself for CEGUI.

This option is useful in cases where you've made changes to the default OpenGL state and do not want to save/restore those between CEGUI rendering calls. Note that this option will not deal with every possible state or extension - if you want a state added here, make a request and we'll consider it ;)

RenderTarget* CEGUI::OpenGLRendererBase::getActiveRenderTarget ( )

Helper to get the active render target.

Returns
The active RenderTarget.
const CEGUI::Rectf& CEGUI::OpenGLRendererBase::getActiveViewPort ( )

Helper to get the viewport.

Returns
The viewport.
virtual Sizef CEGUI::OpenGLRendererBase::getAdjustedTextureSize ( const Sizef sz) const
virtual

Helper to return a valid texture size according to reported OpenGL capabilities.

Parameters
szSize object containing input size.
Returns
Size object containing - possibly different - output size.

Reimplemented in CEGUI::OpenGL3Renderer.

RenderTarget& CEGUI::OpenGLRendererBase::getDefaultRenderTarget ( )
virtual

Returns the default RenderTarget object. The default render target is is typically one that targets the entire screen (or rendering window).

Returns
Reference to a RenderTarget object.

Implements CEGUI::Renderer.

const Vector2f& CEGUI::OpenGLRendererBase::getDisplayDPI ( ) const
virtual

Return the resolution of the display or host window in dots per inch.

Returns
Vector2 object that describes the resolution of the display or host window in DPI.

Implements CEGUI::Renderer.

const Sizef& CEGUI::OpenGLRendererBase::getDisplaySize ( ) const
virtual

Return the size of the display or host window in pixels.

Returns
Size object describing the pixel dimesntions of the current display or host window.

Implements CEGUI::Renderer.

const String& CEGUI::OpenGLRendererBase::getIdentifierString ( ) const
virtual

Return identification string for the renderer module.

Returns
String object holding text that identifies the Renderer in use.

Implements CEGUI::Renderer.

uint CEGUI::OpenGLRendererBase::getMaxTextureSize ( ) const
virtual

Return the pixel size of the maximum supported texture.

Returns
Size of the maximum supported texture in pixels.

Implements CEGUI::Renderer.

Texture& CEGUI::OpenGLRendererBase::getTexture ( const String name) const
virtual

Return a Texture object that was previously created by calling the createTexture functions.

Parameters
nameString holding the name of the Texture object to be returned.

Implements CEGUI::Renderer.

virtual const mat4Pimpl* CEGUI::OpenGLRendererBase::getViewProjectionMatrix ( )
virtual

Helper to return view projection matrix.

Returns
The view projection matrix.
virtual bool CEGUI::OpenGLRendererBase::isS3TCSupported ( ) const
pure virtual
Deprecated:
  • the OpenGL Info class should be used in the future for this purpose

Implemented in CEGUI::OpenGL3Renderer, and CEGUI::OpenGLRenderer.

bool CEGUI::OpenGLRendererBase::isTexCoordSystemFlipped ( ) const
inline

Returns if the texture coordinate system is vertically flipped or not. The original of a texture coordinate system is typically located either at the the top-left or the bottom-left. CEGUI, Direct3D and most rendering engines assume it to be on the top-left. OpenGL assumes it to be at the bottom left.

This function is intended to be used when generating geometry for rendering the TextureTarget onto another surface. It is also intended to be used when trying to use a custom texture (RTT) inside CEGUI using the Image class, in order to determine the Image coordinates correctly.

Returns
  • true if flipping is required: the texture coordinate origin is at the bottom left
  • false if flipping is not required: the texture coordinate origin is at the top left
void CEGUI::OpenGLRendererBase::setActiveRenderTarget ( RenderTarget renderTarget)

Helper to set the active render target.

Parameters
renderTargetThe active RenderTarget.
void CEGUI::OpenGLRendererBase::setDisplaySize ( const Sizef size)
virtual

Set the size of the display or host window in pixels for this Renderer object.

This is intended to be called by the System as part of the notification process when display size changes are notified to it via the System::notifyDisplaySizeChanged function.

Note
The Renderer implementation should not use this function other than to perform internal state updates on the Renderer and related objects.
Parameters
sizeSize object describing the dimesions of the current or host window in pixels.

Implements CEGUI::Renderer.

virtual void CEGUI::OpenGLRendererBase::setViewProjectionMatrix ( const mat4Pimpl viewProjectionMatrix)
virtual

Helper to set the view projection matrix.

Parameters
viewProjectionMatrixThe view projection matrix.

Reimplemented in CEGUI::OpenGLRenderer.