28 #ifndef __RenderSystem_H_
29 #define __RenderSystem_H_
137 virtual const String& getName(
void)
const = 0;
181 virtual void setConfigOption(
const String &name,
const String &value) = 0;
195 virtual String validateConfigOptions(
void) = 0;
213 virtual RenderWindow* _initialise(
bool autoCreateWindow,
const String& windowTitle =
"OGRE Render Window");
238 virtual void reinitialise(
void) = 0;
242 virtual void shutdown(
void);
247 virtual void setAmbientLight(
float r,
float g,
float b) = 0;
258 virtual void setLightingEnabled(
bool enabled) = 0;
266 void setWBufferEnabled(
bool enabled);
270 bool getWBufferEnabled(
void)
const;
508 virtual RenderWindow* _createRenderWindow(
const String &name,
unsigned int width,
unsigned int height,
537 virtual void destroyRenderWindow(
const String& name);
539 virtual void destroyRenderTexture(
const String& name);
541 virtual void destroyRenderTarget(
const String& name);
545 virtual void attachRenderTarget(
RenderTarget &target );
566 virtual String getErrorDescription(
long errorNumber)
const = 0;
581 void setWaitForVerticalBlank(
bool enabled);
585 bool getWaitForVerticalBlank(
void)
const;
601 size_t getGlobalNumberOfInstances()
const;
604 void setGlobalNumberOfInstances(
const size_t val);
606 #ifdef RTSHADER_SYSTEM_BUILD_CORE_SHADERS
609 void setFixedPipelineEnabled(
bool enabled);
613 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,
800 virtual void _setTextureLayerAnisotropy(
size_t unit,
unsigned int maxAnisotropy) = 0;
806 virtual void _setTextureBorderColour(
size_t unit,
const ColourValue& colour) = 0;
816 virtual void _setTextureMipmapBias(
size_t unit,
float bias) = 0;
822 virtual void _setTextureMatrix(
size_t unit,
const Matrix4& xform) = 0;
857 virtual void _setAlphaRejectSettings(
CompareFunction func,
unsigned char value,
bool alphaToCoverage) = 0;
862 virtual void _setTextureProjectionRelativeTo(
bool enabled,
const Vector3& pos);
880 void _cleanupDepthBuffers(
bool bCleanManualBuffers=
true );
886 virtual void _beginFrame(
void) = 0;
908 virtual void _endFrame(
void) = 0;
916 virtual void _setViewport(
Viewport *vp) = 0;
918 virtual Viewport* _getViewport(
void);
931 virtual void _setCullingMode(
CullingMode mode) = 0;
954 virtual void _setDepthBufferCheckEnabled(
bool enabled =
true) = 0;
959 virtual void _setDepthBufferWriteEnabled(
bool enabled =
true) = 0;
975 virtual void _setColourBufferWriteEnabled(
bool red,
bool green,
bool blue,
bool alpha) = 0;
998 virtual void _setDepthBias(
float constantBias,
float slopeScaleBias = 0.0f) = 0;
1014 virtual void _beginGeometryCount(
void);
1016 virtual unsigned int _getFaceCount(
void)
const;
1018 virtual unsigned int _getBatchCount(
void)
const;
1020 virtual unsigned int _getVertexCount(
void)
const;
1042 virtual void _convertProjectionMatrix(
const Matrix4& matrix,
1043 Matrix4& dest,
bool forGpuProgram =
false) = 0;
1051 virtual void _makeProjectionMatrix(
const Radian& fovy,
Real aspect,
Real nearPlane,
Real farPlane,
1052 Matrix4& dest,
bool forGpuProgram =
false) = 0;
1060 virtual void _makeProjectionMatrix(
Real left,
Real right,
Real bottom,
Real top,
1061 Real nearPlane,
Real farPlane,
Matrix4& dest,
bool forGpuProgram =
false) = 0;
1068 virtual void _makeOrthoMatrix(
const Radian& fovy,
Real aspect,
Real nearPlane,
Real farPlane,
1069 Matrix4& dest,
bool forGpuProgram =
false) = 0;
1087 virtual void _applyObliqueDepthProjection(
Matrix4& matrix,
const Plane& plane,
1088 bool forGpuProgram) = 0;
1091 virtual void _setPolygonMode(
PolygonMode level) = 0;
1099 virtual void setStencilCheckEnabled(
bool enabled) = 0;
1157 bool twoSidedOperation =
false) = 0;
1176 virtual void setNormaliseNormals(
bool normalise) = 0;
1209 virtual const String& _getDefaultViewportMaterialScheme(
void)
const;
1215 virtual void bindGpuProgram(
GpuProgram* prg);
1227 virtual void bindGpuProgramPassIterationParameters(
GpuProgramType gptype) = 0;
1239 virtual void setClipPlanes(
const PlaneList& clipPlanes);
1242 virtual void addClipPlane (
const Plane &p);
1248 virtual void resetClipPlanes();
1251 virtual void _initRenderTargets(
void);
1256 virtual void _notifyCameraRemoved(
const Camera* cam);
1259 virtual void _updateAllRenderTargets(
bool swapBuffers =
true);
1262 virtual void _swapAllRenderTargetBuffers(
bool waitForVsync =
true);
1266 virtual void setInvertVertexWinding(
bool invert);
1271 virtual bool getInvertVertexWinding(
void)
const;
1284 virtual void setScissorTest(
bool enabled,
size_t left = 0,
size_t top = 0,
1285 size_t right = 800,
size_t bottom = 600) = 0;
1294 virtual void clearFrameBuffer(
unsigned int buffers,
1296 Real depth = 1.0f,
unsigned short stencil = 0) = 0;
1306 virtual Real getHorizontalTexelOffset(
void) = 0;
1316 virtual Real getVerticalTexelOffset(
void) = 0;
1326 virtual Real getMinimumDepthInputValue(
void) = 0;
1335 virtual Real getMaximumDepthInputValue(
void) = 0;
1353 float multiplier = 0.0f,
float slopeScale = 0.0f)
1355 mDerivedDepthBias = derive;
1356 mDerivedDepthBiasBase = baseValue;
1357 mDerivedDepthBiasMultiplier = multiplier;
1358 mDerivedDepthBiasSlopeScale = slopeScale;
1364 virtual void _setRenderTarget(
RenderTarget *target) = 0;
1381 virtual void eventOccurred(
const String& eventName,
1397 virtual void addListener(Listener* l);
1400 virtual void removeListener(Listener* l);
1424 virtual void preExtraThreadsStarted() = 0;
1430 virtual void postExtraThreadsStarted() = 0;
1444 virtual void registerThread() = 0;
1449 virtual void unregisterThread() = 0;
1455 virtual unsigned int getDisplayMonitorCount()
const = 0;
1460 virtual void beginProfileEvent(
const String &eventName ) = 0;
1465 virtual void endProfileEvent(
void ) = 0;
1471 virtual void markProfileEvent(
const String &event ) = 0;
1533 #ifdef RTSHADER_SYSTEM_BUILD_CORE_SHADERS
1534 bool mEnableFixedPipeline;
1542 bool updatePassIterationRenderState(
void);
1571 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...
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.
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
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 index 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.
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.
ShadeOptions
Light shading modes.
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.
Specialisation of SharedPtr to allow SharedPtr to be assigned to TexturePtr.
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.
virtual bool areFixedFunctionLightsInViewSpace() const
Are fixed-function lights provided in view space? Affects optimisation.
TextureManager * mTextureManager
PolygonMode
The polygon mode to use when rasterising.
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
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 onthe 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.
unsigned int mVSyncInterval
RenderTargetMap mRenderTargets
The render targets.
float mDerivedDepthBiasMultiplier
Defines a listener on the custom events that this render system can raise.
list< Listener * >::type ListenerList