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;
virtual const DriverVersion & getDriverVersion(void) const
Returns the driver version.
Manages the target rendering window.
A 'canvas' which can receive the results of a rendering operation.
GpuProgramParametersSharedPtr mActiveFragmentGpuProgramParameters
A viewpoint from which the scene will be rendered.
RenderSystemCapabilities * mCurrentCapabilities
Viewport * mActiveViewport
Class encapsulating a standard 4x4 homogeneous matrix.
float Real
Software floating point type.
GpuProgramParametersSharedPtr mActiveGeometryGpuProgramParameters
Records the state of all the vertex buffer bindings required to provide a vertex declaration with the...
bool mEnableFixedPipeline
is fixed pipeline enabled
map< String, String >::type NameValuePairList
Name / value parameter pair (first = name, second = value)
bool mDerivedDepthBias
Whether to update the depth bias per render call.
Defines a plane in 3D space.
Leave the stencil buffer unchanged.
GpuProgramParametersSharedPtr mActiveComputeGpuProgramParameters
bool mComputeProgramBound
map< String, RenderTarget * >::type RenderTargetMap
Class for loading & managing textures.
Class representing colour.
GpuProgramType
Enumerates the types of programs which can run on the GPU.
static const ColourValue White
bool mTesselationHullProgramBound
A frustum represents a pyramid, capped at the near and far end which is used to represent either a vi...
virtual void setCurrentPassIterationCount(const size_t count)
set the current multi pass count value.
StringVector mEventNames
List of names of events this rendersystem may raise.
RenderSystemCapabilities * mRealCapabilities
Used to store the capabilities of the graphics card.
Defines a program which runs on the GPU such as a vertex or fragment program.
VertexDeclaration * mGlobalInstanceVertexBufferVertexDeclaration
a vertex declaration for the global vertex buffer for the global instancing
TexCoordCalcMethod
Enum describing the ways to generate texture coordinates.
MapIterator< Ogre::RenderTargetMap > RenderTargetIterator
Iterator over RenderTargets.
Shared pointer implementation used to share vertex buffers.
vector< DepthBuffer * >::type DepthBufferVec
Invert the bits of the stencil buffer.
SceneBlendFactor
Blending factors for manually blending objects with the scene.
Environment map based on vertex positions.
RenderTarget * mActiveRenderTarget
The Active render target.
size_t mGlobalNumberOfInstances
the number of global instances (this number will be multiply by the render op instance number) ...
CullingMode
Hardware culling modes based on vertex winding.
Concrete IteratorWrapper for nonconst access to the underlying key-value container.
uint16 getNativeShadingLanguageVersion() const
Gets the native shading language version for this render system.
This class represents a render target that renders to multiple RenderTextures at once.
Decrease the stencil value by 1, wrapping when decrementing 0.
No calculated texture coordinates.
This is a abstract class that that provides the interface for the query class for hardware occlusion...
bool mFragmentProgramBound
vector< RenderWindow * >::type RenderWindowList
Render window container.
ListenerList mEventListeners
RenderTargetPriorityMap mPrioritisedRenderTargets
The render targets, ordered by priority.
Increase the stencil value by 1, clamping at the maximum value.
vector< Plane >::type PlaneList
HardwareOcclusionQueryList mHwOcclusionQueries
#define OGRE_MAX_TEXTURE_LAYERS
Define max number of texture layers allowed per pass on any card.
DepthBufferMap mDepthBufferPool
DepthBuffers to be attached to render targets.
size_t mDisabledTexUnitsFrom
Texture units from this upwards are disabled.
float mDerivedDepthBiasBase
virtual const StringVector & getRenderSystemEvents(void) const
Gets a list of the rendersystem specific events that this rendersystem can raise. ...
An abstract class that contains a depth/stencil buffer.
Vector3 mTexProjRelativeOrigin
DriverVersion is used by RenderSystemCapabilities and both GL and D3D9 to store the version of the cu...
virtual RenderTargetIterator getRenderTargetIterator(void)
Returns a specialised MapIterator over all render targets attached to the RenderSystem.
const RenderSystemCapabilities * getCapabilities(void) const
Gets the capabilities of the render system.
bool mTesselationDomainProgramBound
ShadeOptions
Light shading modes.
uint16 mNativeShadingLanguageVersion
Texture addressing mode for each texture coordinate.
map< String, ConfigOption >::type ConfigOptionMap
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Set the stencil value to the reference value.
VertexElementType
Vertex element type, used to identify the base types of the vertex contents.
vector< String >::type StringVector
RenderSystemCapabilities * getMutableCapabilities()
Get a pointer to the current capabilities being used by the RenderSystem.
size_t mCurrentPassIterationNum
bool mInvertVertexWinding
DriverVersion mDriverVersion
size_t mCurrentPassIterationCount
number of times to render the current state
Standard 3-dimensional vector.
bool mGeometryProgramBound
GpuProgramParametersSharedPtr mActiveVertexGpuProgramParameters
The Active GPU programs and gpu program parameters.
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 ...
float mDerivedDepthBiasSlopeScale
An abstraction of a viewport, i.e.
'New' rendering operation using vertex buffers.
Set the stencil value to zero.
This class declares the format of a set of vertex inputs, which can be issued to the rendering API th...
Increase the stencil value by 1, wrapping back to 0 when incrementing the maximum value...
Wrapper class which indicates a given angle value is in Radians.
GpuProgramParametersSharedPtr mActiveTesselationHullGpuProgramParameters
virtual bool areFixedFunctionLightsInViewSpace() const
Are fixed-function lights provided in view space? Affects optimisation.
TextureManager * mTextureManager
PolygonMode
The polygon mode to use when rasterising.
virtual bool isStaticBufferLockable() const
static const ColourValue Black
SceneBlendOperation
Blending operations controls how objects are blended into the scene.
bool mUseCustomCapabilities
singleton class for storing the capabilities of the graphics card.
list< HardwareOcclusionQuery * >::type HardwareOcclusionQueryList
HardwareVertexBufferSharedPtr mGlobalInstanceVertexBuffer
a global vertex buffer for global instancing
GpuProgramParametersSharedPtr mActiveTesselationDomainGpuProgramParameters
map< uint16, DepthBufferVec >::type DepthBufferMap
vector< RenderWindowDescription >::type RenderWindowDescriptionList
Render window creation parameters container.
Decrease the stencil value by 1, clamping at 0.
StencilOperation
Enum describing the various actions which can be taken on the stencil buffer.
FilterOptions
Filtering options for textures / mipmaps.
Environment map based on vertex normals.
Defines the functionality of a 3D API.
CompareFunction
Comparison functions used for the depth/stencil buffer operations and others.
Class representing the state of a single texture unit during a Pass of a Technique, of a Material.
multimap< uchar, RenderTarget * >::type RenderTargetPriorityMap
int TrackVertexColourType
An enumeration describing which material properties should track the vertex colours.
Class which manages blending of both colour and alpha components.
RenderTargetMap mRenderTargets
The render targets.
float mDerivedDepthBiasMultiplier
Defines a listener on the custom events that this render system can raise.
list< Listener * >::type ListenerList