Go to the documentation of this file.
28 #ifndef __RenderSystem_H_
29 #define __RenderSystem_H_
138 virtual const String& getName(
void)
const = 0;
182 virtual void setConfigOption(
const String &name,
const String &value) = 0;
196 virtual String validateConfigOptions(
void) = 0;
212 virtual RenderWindow* _initialise(
bool autoCreateWindow,
const String& windowTitle =
"OGRE Render Window");
243 virtual void reinitialise(
void) = 0;
247 virtual void shutdown(
void);
252 virtual void setAmbientLight(
float r,
float g,
float b) = 0;
263 virtual void setLightingEnabled(
bool enabled) = 0;
271 void setWBufferEnabled(
bool enabled);
275 bool getWBufferEnabled(
void)
const;
529 virtual RenderWindow* _createRenderWindow(
const String &name,
unsigned int width,
unsigned int height,
558 virtual void destroyRenderWindow(
const String& name);
560 virtual void destroyRenderTexture(
const String& name);
562 virtual void destroyRenderTarget(
const String& name);
566 virtual void attachRenderTarget(
RenderTarget &target );
587 virtual String getErrorDescription(
long errorNumber)
const = 0;
603 size_t getGlobalNumberOfInstances()
const;
606 void setGlobalNumberOfInstances(
const size_t val);
610 void setFixedPipelineEnabled(
bool enabled);
614 bool getFixedPipelineEnabled(
void)
const;
621 virtual void setDepthBufferFor(
RenderTarget *renderTarget );
633 virtual void _useLights(
const LightList& lights,
unsigned short limit) = 0;
638 virtual void _setWorldMatrix(
const Matrix4 &m) = 0;
640 virtual void _setWorldMatrices(
const Matrix4* m,
unsigned short count);
642 virtual void _setViewMatrix(
const Matrix4 &m) = 0;
644 virtual void _setProjectionMatrix(
const Matrix4 &m) = 0;
652 virtual void _disableTextureUnit(
size_t texUnit);
654 virtual void _disableTextureUnitsFrom(
size_t texUnit);
688 virtual void _setSurfaceParams(
const ColourValue &ambient,
698 virtual void _setPointSpritesEnabled(
bool enabled) = 0;
710 virtual void _setPointParameters(
Real size,
bool attenuationEnabled,
726 virtual void _setTexture(
size_t unit,
bool enabled,
741 virtual void _setTexture(
size_t unit,
bool enabled,
const String &texname);
752 virtual void _setVertexTexture(
size_t unit,
const TexturePtr& tex);
763 virtual void _setTextureCoordSet(
size_t unit,
size_t index) = 0;
773 const Frustum* frustum = 0) = 0;
781 virtual void _setTextureBlendMode(
size_t unit,
const LayerBlendModeEx& bm) = 0;
789 virtual void _setTextureUnitFiltering(
size_t unit,
FilterOptions minFilter,
803 virtual void _setTextureUnitCompareEnabled(
size_t unit,
bool compare) = 0;
810 virtual void _setTextureUnitCompareFunction(
size_t unit,
CompareFunction function) = 0;
814 virtual void _setTextureLayerAnisotropy(
size_t unit,
unsigned int maxAnisotropy) = 0;
820 virtual void _setTextureBorderColour(
size_t unit,
const ColourValue& colour) = 0;
830 virtual void _setTextureMipmapBias(
size_t unit,
float bias) = 0;
836 virtual void _setTextureMatrix(
size_t unit,
const Matrix4& xform) = 0;
871 virtual void _setAlphaRejectSettings(
CompareFunction func,
unsigned char value,
bool alphaToCoverage) = 0;
876 virtual void _setTextureProjectionRelativeTo(
bool enabled,
const Vector3& pos);
894 void _cleanupDepthBuffers(
bool bCleanManualBuffers=
true );
900 virtual void _beginFrame(
void) = 0;
922 virtual void _endFrame(
void) = 0;
930 virtual void _setViewport(
Viewport *vp) = 0;
932 virtual Viewport* _getViewport(
void);
945 virtual void _setCullingMode(
CullingMode mode) = 0;
968 virtual void _setDepthBufferCheckEnabled(
bool enabled =
true) = 0;
973 virtual void _setDepthBufferWriteEnabled(
bool enabled =
true) = 0;
989 virtual void _setColourBufferWriteEnabled(
bool red,
bool green,
bool blue,
bool alpha) = 0;
1012 virtual void _setDepthBias(
float constantBias,
float slopeScaleBias = 0.0f) = 0;
1028 virtual void _beginGeometryCount(
void);
1030 virtual unsigned int _getFaceCount(
void)
const;
1032 virtual unsigned int _getBatchCount(
void)
const;
1034 virtual unsigned int _getVertexCount(
void)
const;
1056 virtual void _convertProjectionMatrix(
const Matrix4& matrix,
1057 Matrix4& dest,
bool forGpuProgram =
false) = 0;
1065 virtual void _makeProjectionMatrix(
const Radian& fovy,
Real aspect,
Real nearPlane,
Real farPlane,
1066 Matrix4& dest,
bool forGpuProgram =
false) = 0;
1074 virtual void _makeProjectionMatrix(
Real left,
Real right,
Real bottom,
Real top,
1075 Real nearPlane,
Real farPlane,
Matrix4& dest,
bool forGpuProgram =
false) = 0;
1082 virtual void _makeOrthoMatrix(
const Radian& fovy,
Real aspect,
Real nearPlane,
Real farPlane,
1083 Matrix4& dest,
bool forGpuProgram =
false) = 0;
1101 virtual void _applyObliqueDepthProjection(
Matrix4& matrix,
const Plane& plane,
1102 bool forGpuProgram) = 0;
1105 virtual void _setPolygonMode(
PolygonMode level) = 0;
1113 virtual void setStencilCheckEnabled(
bool enabled) = 0;
1174 bool twoSidedOperation =
false) = 0;
1193 virtual void setNormaliseNormals(
bool normalise) = 0;
1226 virtual const String& _getDefaultViewportMaterialScheme(
void)
const;
1232 virtual void bindGpuProgram(
GpuProgram* prg);
1244 virtual void bindGpuProgramPassIterationParameters(
GpuProgramType gptype) = 0;
1263 virtual void setClipPlanes(
const PlaneList& clipPlanes);
1266 virtual void addClipPlane (
const Plane &p);
1272 virtual void resetClipPlanes();
1275 virtual void _initRenderTargets(
void);
1280 virtual void _notifyCameraRemoved(
const Camera* cam);
1283 virtual void _updateAllRenderTargets(
bool swapBuffers =
true);
1286 virtual void _swapAllRenderTargetBuffers();
1290 virtual void setInvertVertexWinding(
bool invert);
1295 virtual bool getInvertVertexWinding(
void)
const;
1308 virtual void setScissorTest(
bool enabled,
size_t left = 0,
size_t top = 0,
1309 size_t right = 800,
size_t bottom = 600) = 0;
1318 virtual void clearFrameBuffer(
unsigned int buffers,
1320 Real depth = 1.0f,
unsigned short stencil = 0) = 0;
1330 virtual Real getHorizontalTexelOffset(
void) = 0;
1340 virtual Real getVerticalTexelOffset(
void) = 0;
1350 virtual Real getMinimumDepthInputValue(
void) = 0;
1359 virtual Real getMaximumDepthInputValue(
void) = 0;
1377 float multiplier = 0.0f,
float slopeScale = 0.0f)
1379 mDerivedDepthBias = derive;
1380 mDerivedDepthBiasBase = baseValue;
1381 mDerivedDepthBiasMultiplier = multiplier;
1382 mDerivedDepthBiasSlopeScale = slopeScale;
1388 virtual void _setRenderTarget(
RenderTarget *target) = 0;
1405 virtual void eventOccurred(
const String& eventName,
1421 virtual void addListener(Listener* l);
1424 virtual void removeListener(Listener* l);
1448 virtual void preExtraThreadsStarted() = 0;
1454 virtual void postExtraThreadsStarted() = 0;
1468 virtual void registerThread() = 0;
1473 virtual void unregisterThread() = 0;
1479 virtual unsigned int getDisplayMonitorCount()
const = 0;
1484 virtual void beginProfileEvent(
const String &eventName ) = 0;
1489 virtual void endProfileEvent(
void ) = 0;
1495 virtual void markProfileEvent(
const String &event ) = 0;
1499 virtual bool hasAnisotropicMipMapFilter()
const = 0;
1506 virtual void getCustomAttribute(
const String& name,
void* pData);
1576 bool updatePassIterationRenderState(
void);
1608 virtual void setClipPlanesImpl(
const PlaneList& clipPlanes) = 0;
Class for loading & managing textures.
GpuProgramParametersSharedPtr mActiveComputeGpuProgramParameters
Decrease the stencil value by 1, wrapping when decrementing 0.
float mDerivedDepthBiasBase
Class representing the state of a single texture unit during a Pass of a Technique,...
size_t mGlobalNumberOfInstances
the number of global instances (this number will be multiply by the render op instance number)
Defines the functionality of a 3D API.
RenderTargetPriorityMap mPrioritisedRenderTargets
The render targets, ordered by priority.
map< uint16, DepthBufferVec >::type DepthBufferMap
const RenderSystemCapabilities * getCapabilities(void) const
Gets the capabilities of the render system.
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
GpuProgramParametersSharedPtr mActiveTesselationDomainGpuProgramParameters
Defines a plane in 3D space.
multimap< uchar, RenderTarget * >::type RenderTargetPriorityMap
An abstract class that contains a depth/stencil buffer.
Decrease the stencil value by 1, clamping at 0.
Environment map based on vertex normals.
bool mEnableFixedPipeline
is fixed pipeline enabled
This is a abstract class that that provides the interface for the query class for hardware occlusion.
A viewpoint from which the scene will be rendered.
No calculated texture coordinates.
bool mDerivedDepthBias
Whether to update the depth bias per render call.
GpuProgramParametersSharedPtr mActiveFragmentGpuProgramParameters
StringVector mEventNames
List of names of events this rendersystem may raise.
vector< String >::type StringVector
Manages the target rendering window.
GpuProgramParametersSharedPtr mActiveTesselationHullGpuProgramParameters
size_t mDisabledTexUnitsFrom
Texture units from this upwards are disabled.
bool mFragmentProgramBound
vector< RenderWindowDescription >::type RenderWindowDescriptionList
Render window creation parameters container.
Set the stencil value to zero.
bool mComputeProgramBound
Defines a program which runs on the GPU such as a vertex or fragment program.
virtual void setCurrentPassIterationCount(const size_t count)
set the current multi pass count value.
GpuProgramParametersSharedPtr mActiveVertexGpuProgramParameters
The Active GPU programs and gpu program parameters.
RenderSystemCapabilities * mRealCapabilities
Used to store the capabilities of the graphics card.
Leave the stencil buffer unchanged.
bool mInvertVertexWinding
MapIterator< Ogre::RenderTargetMap > RenderTargetIterator
Iterator over RenderTargets.
uint16 mNativeShadingLanguageVersion
DepthBufferMap mDepthBufferPool
DepthBuffers to be attached to render targets.
Class which manages blending of both colour and alpha components.
map< String, String >::type NameValuePairList
Name / value parameter pair (first = name, second = value)
CompareFunction
Comparison functions used for the depth/stencil buffer operations and others.
GpuProgramType
Enumerates the types of programs which can run on the GPU.
Records the state of all the vertex buffer bindings required to provide a vertex declaration with the...
VertexElementType
Vertex element type, used to identify the base types of the vertex contents.
StencilOperation
Enum describing the various actions which can be taken on the stencil buffer.
Class encapsulating a standard 4x4 homogeneous matrix.
A 'canvas' which can receive the results of a rendering operation.
map< String, ConfigOption >::type ConfigOptionMap
SceneBlendFactor
Blending factors for manually blending objects with the scene.
Increase the stencil value by 1, wrapping back to 0 when incrementing the maximum value.
virtual bool areFixedFunctionLightsInViewSpace() const
Are fixed-function lights provided in view space? Affects optimisation.
Viewport * mActiveViewport
An abstraction of a viewport, i.e.
Environment map based on vertex positions.
This class declares the format of a set of vertex inputs, which can be issued to the rendering API th...
Shared pointer implementation used to share vertex buffers.
bool mUseCustomCapabilities
Increase the stencil value by 1, clamping at the maximum value.
vector< RenderWindow * >::type RenderWindowList
Render window container.
size_t mCurrentPassIterationCount
number of times to render the current state
bool mGeometryProgramBound
FilterOptions
Filtering options for textures / mipmaps.
Wrapper class which indicates a given angle value is in Radians.
bool mTesselationHullProgramBound
singleton class for storing the capabilities of the graphics card.
Vector3 mTexProjRelativeOrigin
float mDerivedDepthBiasMultiplier
This class represents a render target that renders to multiple RenderTextures at once.
Set the stencil value to the reference value.
CullingMode
Hardware culling modes based on vertex winding.
int TrackVertexColourType
An enumeration describing which material properties should track the vertex colours.
static const ColourValue White
A frustum represents a pyramid, capped at the near and far end which is used to represent either a vi...
GpuProgramParametersSharedPtr mActiveGeometryGpuProgramParameters
VertexDeclaration * mGlobalInstanceVertexBufferVertexDeclaration
a vertex declaration for the global vertex buffer for the global instancing
TextureManager * mTextureManager
Concrete IteratorWrapper for nonconst access to the underlying key-value container.
#define OGRE_MAX_TEXTURE_LAYERS
Define max number of texture layers allowed per pass on any card.
Class representing colour.
virtual void setDeriveDepthBias(bool derive, float baseValue=0.0f, float multiplier=0.0f, float slopeScale=0.0f)
Tell the render system whether to derive a depth bias on its own based on the values passed to it in ...
list< HardwareOcclusionQuery * >::type HardwareOcclusionQueryList
RenderTargetMap mRenderTargets
The render targets.
DriverVersion mDriverVersion
HardwareVertexBufferSharedPtr mGlobalInstanceVertexBuffer
a global vertex buffer for global instancing
bool mTesselationDomainProgramBound
size_t mCurrentPassIterationNum
virtual RenderTargetIterator getRenderTargetIterator(void)
Returns a specialised MapIterator over all render targets attached to the RenderSystem.
static const ColourValue Black
ShadeOptions
Light shading modes.
virtual const StringVector & getRenderSystemEvents(void) const
Gets a list of the rendersystem specific events that this rendersystem can raise.
Texture addressing mode for each texture coordinate.
vector< DepthBuffer * >::type DepthBufferVec
Invert the bits of the stencil buffer.
float Real
Software floating point type.
RenderSystemCapabilities * getMutableCapabilities()
Get a pointer to the current capabilities being used by the RenderSystem.
uint16 getNativeShadingLanguageVersion() const
Gets the native shading language version for this render system.
float mDerivedDepthBiasSlopeScale
ListenerList mEventListeners
virtual const DriverVersion & getDriverVersion(void) const
Returns the driver version.
list< Listener * >::type ListenerList
TexCoordCalcMethod
Enum describing the ways to generate texture coordinates.
RenderSystemCapabilities * mCurrentCapabilities
map< String, RenderTarget * >::type RenderTargetMap
RenderTarget * mActiveRenderTarget
The Active render target.
vector< Plane >::type PlaneList
PolygonMode
The polygon mode to use when rasterising.
Standard 3-dimensional vector.
'New' rendering operation using vertex buffers.
DriverVersion is used by RenderSystemCapabilities and both GL and D3D9 to store the version of the cu...
virtual bool isStaticBufferLockable() const
Defines a listener on the custom events that this render system can raise.
SceneBlendOperation
Blending operations controls how objects are blended into the scene.
HardwareOcclusionQueryList mHwOcclusionQueries
Copyright © 2012 Torus Knot Software Ltd

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.