Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members
Public Member Functions | Protected Attributes
render::RenderDriver Class Reference

#include <RenderDriver.h>

List of all members.

Public Member Functions

virtual void beginFrame (Viewport *vp)=0
virtual void beginGeometryCount ()
virtual void bindShader (Shader *shader)
 Binds a given Shader (but not the parameters).
virtual void convertProjectionMatrix (const core::matrix4 &matrix, core::matrix4 &dest)
 Converts a uniform projection matrix to suitable for this render system.
virtual IndexBuffercreateIndexBuffer (IndexType idxType, u32 numIndexes, resource::BufferUsage usage, bool useShadowBuffer=false)=0
 Create an index buffer.
virtual PixelBuffercreatePixelBuffer (u32 width, u32 height, u32 depth, resource::PixelFormat format, resource::BufferUsage usage, bool useShadowBuffer=false)=0
 Create a pixel buffer.
virtual RenderWindowcreateRenderWindow (s32 width, s32 height, s32 colorDepth, bool fullScreen, s32 left=0, s32 top=0, bool depthBuffer=true, void *windowId=NULL)=0
 Creates a new rendering window.
virtual VertexBuffercreateVertexBuffer (u32 vertexSize, u32 numVertices, resource::BufferUsage usage, bool useShadowBuffer=false)=0
 Create a vertex buffer.
virtual void disableTextureUnit (u32 texUnit)
 Turns off a texture unit.
virtual void disableTextureUnitsFrom (u32 texUnit)
 Turns off all the texture units starting from a given texture unit.
virtual void endFrame ()=0
 Ends rendering of a frame to the current viewport.
virtual void endGeometryCount ()
virtual u32 getFaceCount ()
virtual f32 getHorizontalTexelOffset ()=0
 Returns the horizontal texel offset value required for mapping texel origins to pixel origins.
virtual f32 getMaximumDepthInputValue ()=0
 Gets the maximum (farthest) depth value to be used when rendering using identity transforms.
virtual f32 getMinimumDepthInputValue ()=0
 Gets the minimum (closest) depth value to be used when rendering using identity transforms.
virtual u32 getNumTextureUnits ()=0
 Return the number of texture units available.
core::matrix4getProjectionMatrix ()
virtual u32 getVertexCount ()
virtual f32 getVerticalTexelOffset ()=0
 Returns the vertical texel offset value required for mapping texel origins to pixel origins.
core::matrix4getViewMatrix ()
core::matrix4getWorldMatrix ()
virtual void initialize ()
virtual bool isShaderBound (ShaderType type)
 Returns whether or not a Shader of the given type is currently bound.
virtual void removeIndexBuffer (IndexBuffer *buf)=0
 Removes an index buffer.
virtual void removePixelBuffer (PixelBuffer *buf)=0
 Removes a pixel buffer.
virtual void removeVertexBuffer (VertexBuffer *buf)=0
 Removes a vertex buffer.
virtual void render (RenderOperation &op)
virtual void renderAxes (const core::vector3d &position, const core::vector3d &right, const core::vector3d &target, const core::vector3d &up)=0
virtual void renderBoundingBox (const core::aabox3d &box)=0
virtual void renderBoundingSphere (const core::sphere3d &sphere)=0
 RenderDriver ()
virtual void renderFrustumVolume (const core::vector3d *corners)=0
virtual void renderGrid (u32 lineSpacing, u32 lineNumber)=0
virtual void renderTestPlane (u32 lineSpacing, u32 lineNumber)=0
virtual void renderWorldAxes ()=0
virtual void setAmbientLight (f32 red, f32 green, f32 blue, f32 alpha)=0
virtual void setDepthBufferCheckEnabled (bool enabled=true)=0
 Sets whether or not the depth buffer check is performed before a pixel write.
virtual void setDepthBufferWriteEnabled (bool enabled=true)=0
 Sets whether or not the depth buffer is updated after a pixel write.
virtual void setFog (FogMode mode=FM_NONE, const Color &color=Color::White, f32 expDensity=1.0f, f32 linearStart=0.0f, f32 linearEnd=1.0f)=0
 Sets the fogging mode for future geometry.
virtual void setLightingEnabled (bool enabled)=0
virtual void setLights (const std::vector< Light * > &lights)=0
 ! Sets a list of lights to the renderer.
virtual void setProjectionMatrix (const core::matrix4 &m)=0
virtual void setSceneBlending (SceneBlendFactor sourceFactor, SceneBlendFactor destFactor)=0
 Sets the global blending factors for combining subsequent renders with the existing frame contents.
virtual void setShadingType (ShadeOptions so)=0
virtual void setSurfaceParams (const Color &ambient, const Color &diffuse, const Color &specular, const Color &emissive, f32 shininess)=0
virtual void setTexture (bool enabled, u32 unit, Texture *tex)=0
virtual void setTextureBlendMode (u32 unit, const LayerBlendMode &bm)=0
virtual void setTextureCoordSet (u32 unit, u32 index)
 Sets the texture coordinate set to use for a texture unit.
virtual void setTextureUnitSettings (u32 texUnit, TextureUnit *tu)
 Utility function for setting all the properties of a texture unit at once.
virtual void setViewMatrix (const core::matrix4 &m)=0
virtual void setViewport (Viewport *vp)=0
virtual void setWorldMatrix (const core::matrix4 &m)=0
virtual void start ()
virtual void stop ()
virtual void unbindShader (ShaderType type)
 Unbinds a given Shader.
virtual void updateShaderAutoParameters (Shader *shader, ShaderParamData &data)
 update Shader parameters to a given Shader.
virtual ~RenderDriver ()

Protected Attributes

ShadermCurrentFragmentShader
ShadermCurrentGeometryShader
ShadermCurrentVertexShader
u32 mDisabledTexUnitsFrom
u32 mFaceCount
LightmLights [GAME_MAX_SIMULTANEOUS_LIGHTS]
Color mManualBlendColors [GAME_MAX_TEXTURE_LAYERS][2]
core::matrix4 mProjMatrix
u32 mTextureCoordIndex [GAME_MAX_TEXTURE_COORD_SETS]
u32 mVertexCount
core::matrix4 mViewMatrix
core::matrix4 mWorldMatrix

Detailed Description

Defines the functionality of a 3D Rendering API

The RenderSystem class provides a base interface which abstracts the general functionality of the 3D API e.g. Direct3D or OpenGL. Whilst a few of the general methods have implementations, most of this class is abstract, requiring a subclass based on a specific API to be constructed to provide the full functionality.


Constructor & Destructor Documentation

render::RenderDriver::RenderDriver ( )
render::RenderDriver::~RenderDriver ( ) [virtual]

Member Function Documentation

virtual void render::RenderDriver::beginFrame ( Viewport vp) [pure virtual]

Signifies the beginning of a frame, ie the start of rendering on a single viewport. Will occur several times per complete frame if multiple viewports exist.

Referenced by render::RenderManager::beginFrame().

void render::RenderDriver::beginGeometryCount ( ) [virtual]

References mFaceCount, and mVertexCount.

Referenced by render::RenderManager::render().

void render::RenderDriver::bindShader ( Shader shader) [virtual]
void render::RenderDriver::convertProjectionMatrix ( const core::matrix4 matrix,
core::matrix4 dest 
) [virtual]

Converts a uniform projection matrix to suitable for this render system.

Referenced by render::RenderManager::convertProjectionMatrix().

virtual IndexBuffer* render::RenderDriver::createIndexBuffer ( IndexType  idxType,
u32  numIndexes,
resource::BufferUsage  usage,
bool  useShadowBuffer = false 
) [pure virtual]

Create an index buffer.

Referenced by render::RenderManager::createIndexBuffer().

virtual PixelBuffer* render::RenderDriver::createPixelBuffer ( u32  width,
u32  height,
u32  depth,
resource::PixelFormat  format,
resource::BufferUsage  usage,
bool  useShadowBuffer = false 
) [pure virtual]

Create a pixel buffer.

Referenced by render::RenderManager::createPixelBuffer().

virtual RenderWindow* render::RenderDriver::createRenderWindow ( s32  width,
s32  height,
s32  colorDepth,
bool  fullScreen,
s32  left = 0,
s32  top = 0,
bool  depthBuffer = true,
void *  windowId = NULL 
) [pure virtual]

Creates a new rendering window.

Referenced by render::RenderManager::createRenderWindow().

virtual VertexBuffer* render::RenderDriver::createVertexBuffer ( u32  vertexSize,
u32  numVertices,
resource::BufferUsage  usage,
bool  useShadowBuffer = false 
) [pure virtual]

Create a vertex buffer.

Referenced by render::RenderManager::createVertexBuffer().

void render::RenderDriver::disableTextureUnit ( u32  texUnit) [virtual]

Turns off a texture unit.

References setTexture().

Referenced by disableTextureUnitsFrom().

void render::RenderDriver::disableTextureUnitsFrom ( u32  texUnit) [virtual]
virtual void render::RenderDriver::endFrame ( ) [pure virtual]

Ends rendering of a frame to the current viewport.

Referenced by render::RenderManager::endFrame().

void render::RenderDriver::endGeometryCount ( ) [virtual]
u32 render::RenderDriver::getFaceCount ( ) [virtual]

References mFaceCount.

Referenced by render::RenderManager::render().

virtual f32 render::RenderDriver::getHorizontalTexelOffset ( ) [pure virtual]

Returns the horizontal texel offset value required for mapping texel origins to pixel origins.

Referenced by render::RenderManager::getHorizontalTexelOffset().

virtual f32 render::RenderDriver::getMaximumDepthInputValue ( ) [pure virtual]

Gets the maximum (farthest) depth value to be used when rendering using identity transforms.

Referenced by render::RenderManager::getMaximumDepthInputValue().

virtual f32 render::RenderDriver::getMinimumDepthInputValue ( ) [pure virtual]

Gets the minimum (closest) depth value to be used when rendering using identity transforms.

Referenced by render::RenderManager::getMinimumDepthInputValue().

virtual u32 render::RenderDriver::getNumTextureUnits ( ) [pure virtual]

Return the number of texture units available.

Referenced by disableTextureUnitsFrom().

core::matrix4 & render::RenderDriver::getProjectionMatrix ( )

References mProjMatrix.

u32 render::RenderDriver::getVertexCount ( ) [virtual]

References mVertexCount.

virtual f32 render::RenderDriver::getVerticalTexelOffset ( ) [pure virtual]

Returns the vertical texel offset value required for mapping texel origins to pixel origins.

Referenced by render::RenderManager::getVerticalTexelOffset().

core::matrix4 & render::RenderDriver::getViewMatrix ( )

References mViewMatrix.

core::matrix4 & render::RenderDriver::getWorldMatrix ( )

References mWorldMatrix.

void render::RenderDriver::initialize ( ) [virtual]
bool render::RenderDriver::isShaderBound ( ShaderType  type) [virtual]

Returns whether or not a Shader of the given type is currently bound.

References mCurrentFragmentShader, mCurrentGeometryShader, mCurrentVertexShader, render::ST_FRAGMENT, render::ST_GEOMETRY, and render::ST_VERTEX.

Referenced by render::RenderManager::setMaterial().

virtual void render::RenderDriver::removeIndexBuffer ( IndexBuffer buf) [pure virtual]
virtual void render::RenderDriver::removePixelBuffer ( PixelBuffer buf) [pure virtual]
virtual void render::RenderDriver::removeVertexBuffer ( VertexBuffer buf) [pure virtual]
void render::RenderDriver::render ( RenderOperation op) [virtual]

Render something to the active viewport.

Low-level rendering interface to perform rendering operations. Unlikely to be used directly by client applications, since the SceneManager and various support classes will be responsible for calling this method. Can only be called between _beginScene and _endScene

Parameters:
op,:A rendering operation instance, which contains details of the operation to be performed.

References render::IndexData::indexCount, render::RenderOperation::indexData, mFaceCount, mVertexCount, render::RenderOperation::operationType, render::OT_LINE_LIST, render::OT_LINE_STRIP, render::OT_POINT_LIST, render::OT_TRIANGLE_FAN, render::OT_TRIANGLE_LIST, render::OT_TRIANGLE_STRIP, render::RenderOperation::useIndexes, render::VertexData::vertexCount, and render::RenderOperation::vertexData.

Referenced by render::RenderManager::renderSingleOverlay(), render::RenderManager::renderSingleRenderable(), and render::RenderManager::renderVisibleOverlays().

virtual void render::RenderDriver::renderAxes ( const core::vector3d position,
const core::vector3d right,
const core::vector3d target,
const core::vector3d up 
) [pure virtual]
virtual void render::RenderDriver::renderBoundingBox ( const core::aabox3d box) [pure virtual]
virtual void render::RenderDriver::renderBoundingSphere ( const core::sphere3d sphere) [pure virtual]
virtual void render::RenderDriver::renderFrustumVolume ( const core::vector3d corners) [pure virtual]
virtual void render::RenderDriver::renderGrid ( u32  lineSpacing,
u32  lineNumber 
) [pure virtual]
virtual void render::RenderDriver::renderTestPlane ( u32  lineSpacing,
u32  lineNumber 
) [pure virtual]
virtual void render::RenderDriver::renderWorldAxes ( ) [pure virtual]
virtual void render::RenderDriver::setAmbientLight ( f32  red,
f32  green,
f32  blue,
f32  alpha 
) [pure virtual]
virtual void render::RenderDriver::setDepthBufferCheckEnabled ( bool  enabled = true) [pure virtual]

Sets whether or not the depth buffer check is performed before a pixel write.

Referenced by render::RenderManager::render(), render::RenderManager::renderSingleRenderable(), and render::RenderManager::setMaterial().

virtual void render::RenderDriver::setDepthBufferWriteEnabled ( bool  enabled = true) [pure virtual]

Sets whether or not the depth buffer is updated after a pixel write.

Referenced by render::RenderManager::render(), render::RenderManager::renderSingleRenderable(), and render::RenderManager::setMaterial().

virtual void render::RenderDriver::setFog ( FogMode  mode = FM_NONE,
const Color color = Color::White,
f32  expDensity = 1.0f,
f32  linearStart = 0.0f,
f32  linearEnd = 1.0f 
) [pure virtual]
virtual void render::RenderDriver::setLightingEnabled ( bool  enabled) [pure virtual]
virtual void render::RenderDriver::setLights ( const std::vector< Light * > &  lights) [pure virtual]

! Sets a list of lights to the renderer.

Referenced by render::RenderManager::renderSingleRenderable().

virtual void render::RenderDriver::setProjectionMatrix ( const core::matrix4 m) [pure virtual]
virtual void render::RenderDriver::setSceneBlending ( SceneBlendFactor  sourceFactor,
SceneBlendFactor  destFactor 
) [pure virtual]

Sets the global blending factors for combining subsequent renders with the existing frame contents.

Referenced by render::RenderManager::render(), render::RenderManager::renderSingleRenderable(), and render::RenderManager::setMaterial().

virtual void render::RenderDriver::setShadingType ( ShadeOptions  so) [pure virtual]
virtual void render::RenderDriver::setSurfaceParams ( const Color ambient,
const Color diffuse,
const Color specular,
const Color emissive,
f32  shininess 
) [pure virtual]

Sets the surface properties to be used for future rendering.

Parameters:
ambient,:The amount of ambient (sourceless and directionless) light an object reflects. Affected by the color/amount of ambient light in the scene.
diffuse,:The amount of light from directed sources that is reflected (affected by color/amount of point, directed and spot light sources)
specular,:The amount of specular light reflected. This is also affected by directed light sources but represents the color at the highlights of the object.
emissive,:The color of light emitted from the object. Note that this will make an object seem brighter and not dependent on lights in the scene, but it will not act as a light, so will not illuminate other objects.
shininess,:A value which only has an effect on specular highlights (so specular must be non-black). The higher this value, the smaller and crisper the specular highlights will be, imitating a more highly polished surface. This value is not constrained to 0.0-1.0, in fact it is likely to be more (10.0 gives a modest sheen to an object).

Referenced by render::RenderManager::setMaterial().

virtual void render::RenderDriver::setTexture ( bool  enabled,
u32  unit,
Texture tex 
) [pure virtual]

Sets the status of a single texture stage.

Parameters:
enabled,:boolean to turn an unit on/off
unit,:The index of the texture unit to modify. Multi-texturing hardware can support multiple units.
tex,:The the texture to use.

Referenced by disableTextureUnit(), and setTextureUnitSettings().

virtual void render::RenderDriver::setTextureBlendMode ( u32  unit,
const LayerBlendMode bm 
) [pure virtual]

Sets the texture blend modes from a TextureUnit.

Parameters:
unit,:Texture unit.
bm,:Details of the blending mode.

Referenced by setTextureUnitSettings().

void render::RenderDriver::setTextureCoordSet ( u32  unit,
u32  index 
) [virtual]

Sets the texture coordinate set to use for a texture unit.

References mTextureCoordIndex.

Referenced by setTextureUnitSettings().

void render::RenderDriver::setTextureUnitSettings ( u32  texUnit,
TextureUnit tu 
) [virtual]
virtual void render::RenderDriver::setViewMatrix ( const core::matrix4 m) [pure virtual]
virtual void render::RenderDriver::setViewport ( Viewport vp) [pure virtual]
virtual void render::RenderDriver::setWorldMatrix ( const core::matrix4 m) [pure virtual]
void render::RenderDriver::start ( ) [virtual]
void render::RenderDriver::stop ( ) [virtual]
void render::RenderDriver::unbindShader ( ShaderType  type) [virtual]
void render::RenderDriver::updateShaderAutoParameters ( Shader shader,
ShaderParamData data 
) [virtual]

update Shader parameters to a given Shader.

References render::Shader::updateAutoParameters().


Member Data Documentation

Light* render::RenderDriver::mLights[GAME_MAX_SIMULTANEOUS_LIGHTS] [protected]

Referenced by RenderDriver().

Color render::RenderDriver::mManualBlendColors[GAME_MAX_TEXTURE_LAYERS][2] [protected]
u32 render::RenderDriver::mTextureCoordIndex[GAME_MAX_TEXTURE_COORD_SETS] [protected]

Referenced by RenderDriver(), and setTextureCoordSet().

Referenced by getViewMatrix(), and RenderDriver().

Referenced by getWorldMatrix(), and RenderDriver().


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

The KG Game Engine
The KG Game Engine Documentation © 2006-2011 by Kat'Oun. Generated on Sat Jul 2 2011 00:50:09 by Doxygen (1.7.4)