OGRE  1.9.0
OgreRenderSystem.h
Go to the documentation of this file.
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4(Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org
6
7Copyright (c) 2000-2014 Torus Knot Software Ltd
8
9Permission is hereby granted, free of charge, to any person obtaining a copy
10of this software and associated documentation files (the "Software"), to deal
11in the Software without restriction, including without limitation the rights
12to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13copies of the Software, and to permit persons to whom the Software is
14furnished to do so, subject to the following conditions:
15
16The above copyright notice and this permission notice shall be included in
17all copies or substantial portions of the Software.
18
19THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25THE SOFTWARE.
26-----------------------------------------------------------------------------
27*/
28#ifndef __RenderSystem_H_
29#define __RenderSystem_H_
30
31// Precompiler options
32#include "OgrePrerequisites.h"
33
34#include "OgreString.h"
35
37#include "OgreCommon.h"
38
39#include "OgreMaterialManager.h"
40#include "OgreRenderOperation.h"
42#include "OgreRenderTarget.h"
43#include "OgreRenderTexture.h"
44#include "OgreFrameListener.h"
45#include "OgreConfigOptionMap.h"
46#include "OgreGpuProgram.h"
47#include "OgrePlane.h"
49#include "OgreHeaderPrefix.h"
50
51namespace Ogre
52{
64
65 class TextureManager;
100
101
124 {
125 public:
129
132 virtual ~RenderSystem();
133
136 virtual const String& getName(void) const = 0;
137
160
180 virtual void setConfigOption(const String &name, const String &value) = 0;
181
185
189
194 virtual String validateConfigOptions(void) = 0;
195
210 virtual RenderWindow* _initialise(bool autoCreateWindow, const String& windowTitle = "OGRE Render Window");
211
212 /*
213 Returns whether under the current render system buffers marked as TU_STATIC can be locked for update
214 @remarks
215 Needed in the implementation of DirectX9 with DirectX9Ex driver
216 */
217 virtual bool isStaticBufferLockable() const { return true; }
218
221
229 RenderSystemCapabilities* getMutableCapabilities(){ return mCurrentCapabilities; }
230
238
241 virtual void reinitialise(void) = 0;
242
245 virtual void shutdown(void);
246
247
250 virtual void setAmbientLight(float r, float g, float b) = 0;
251
254 virtual void setShadingType(ShadeOptions so) = 0;
255
261 virtual void setLightingEnabled(bool enabled) = 0;
262
269 void setWBufferEnabled(bool enabled);
270
273 bool getWBufferEnabled(void) const;
274
605 virtual RenderWindow* _createRenderWindow(const String &name, unsigned int width, unsigned int height,
606 bool fullScreen, const NameValuePairList *miscParams = 0) = 0;
607
624 virtual bool _createRenderWindows(const RenderWindowDescriptionList& renderWindowDescriptions,
625 RenderWindowList& createdWindows);
626
627
633
635 virtual void destroyRenderWindow(const String& name);
637 virtual void destroyRenderTexture(const String& name);
639 virtual void destroyRenderTarget(const String& name);
640
643 virtual void attachRenderTarget( RenderTarget &target );
647 virtual RenderTarget * getRenderTarget( const String &name );
653 virtual RenderTarget * detachRenderTarget( const String &name );
654
657
660 return RenderTargetIterator( mRenderTargets.begin(), mRenderTargets.end() );
661 }
664 virtual String getErrorDescription(long errorNumber) const = 0;
665
683 void setGlobalNumberOfInstances(const size_t val);
684
687 void setFixedPipelineEnabled(bool enabled);
688
691 bool getFixedPipelineEnabled(void) const;
692
698 virtual void setDepthBufferFor( RenderTarget *renderTarget );
699
700 // ------------------------------------------------------------------------
701 // Internal Rendering Access
702 // All methods below here are normally only called by other OGRE classes
703 // They can be called by library user if required
704 // ------------------------------------------------------------------------
705
706
710 virtual void _useLights(const LightList& lights, unsigned short limit) = 0;
713 virtual bool areFixedFunctionLightsInViewSpace() const { return false; }
715 virtual void _setWorldMatrix(const Matrix4 &m) = 0;
717 virtual void _setWorldMatrices(const Matrix4* m, unsigned short count);
719 virtual void _setViewMatrix(const Matrix4 &m) = 0;
721 virtual void _setProjectionMatrix(const Matrix4 &m) = 0;
727 virtual void _setTextureUnitSettings(size_t texUnit, TextureUnitState& tl);
729 virtual void _disableTextureUnit(size_t texUnit);
731 virtual void _disableTextureUnitsFrom(size_t texUnit);
765 virtual void _setSurfaceParams(const ColourValue &ambient,
766 const ColourValue &diffuse, const ColourValue &specular,
767 const ColourValue &emissive, Real shininess,
768 TrackVertexColourType tracking = TVC_NONE) = 0;
769
775 virtual void _setPointSpritesEnabled(bool enabled) = 0;
776
787 virtual void _setPointParameters(Real size, bool attenuationEnabled,
788 Real constant, Real linear, Real quadratic, Real minSize, Real maxSize) = 0;
789
790
803 virtual void _setTexture(size_t unit, bool enabled,
804 const TexturePtr &texPtr) = 0;
818 virtual void _setTexture(size_t unit, bool enabled, const String &texname);
819
829 virtual void _setVertexTexture(size_t unit, const TexturePtr& tex);
830
840 virtual void _setTextureCoordSet(size_t unit, size_t index) = 0;
841
850 const Frustum* frustum = 0) = 0;
851
858 virtual void _setTextureBlendMode(size_t unit, const LayerBlendModeEx& bm) = 0;
859
866 virtual void _setTextureUnitFiltering(size_t unit, FilterOptions minFilter,
867 FilterOptions magFilter, FilterOptions mipFilter);
868
874 virtual void _setTextureUnitFiltering(size_t unit, FilterType ftype, FilterOptions filter) = 0;
875
880 virtual void _setTextureUnitCompareEnabled(size_t unit, bool compare) = 0;
881
882
887 virtual void _setTextureUnitCompareFunction(size_t unit, CompareFunction function) = 0;
888
889
891 virtual void _setTextureLayerAnisotropy(size_t unit, unsigned int maxAnisotropy) = 0;
892
894 virtual void _setTextureAddressingMode(size_t unit, const TextureUnitState::UVWAddressingMode& uvw) = 0;
895
897 virtual void _setTextureBorderColour(size_t unit, const ColourValue& colour) = 0;
898
907 virtual void _setTextureMipmapBias(size_t unit, float bias) = 0;
908
913 virtual void _setTextureMatrix(size_t unit, const Matrix4& xform) = 0;
914
925 virtual void _setSceneBlending(SceneBlendFactor sourceFactor, SceneBlendFactor destFactor, SceneBlendOperation op = SBO_ADD) = 0;
926
939 virtual void _setSeparateSceneBlending(SceneBlendFactor sourceFactor, SceneBlendFactor destFactor, SceneBlendFactor sourceFactorAlpha,
940 SceneBlendFactor destFactorAlpha, SceneBlendOperation op = SBO_ADD, SceneBlendOperation alphaOp = SBO_ADD) = 0;
941
948 virtual void _setAlphaRejectSettings(CompareFunction func, unsigned char value, bool alphaToCoverage) = 0;
949
953 virtual void _setTextureProjectionRelativeTo(bool enabled, const Vector3& pos);
954
962 virtual DepthBuffer* _createDepthBufferFor( RenderTarget *renderTarget ) = 0;
963
971 void _cleanupDepthBuffers( bool bCleanManualBuffers=true );
972
977 virtual void _beginFrame(void) = 0;
978
979 //Dummy structure for render system contexts - implementing RenderSystems can extend
980 //as needed
994 virtual void _resumeFrame(RenderSystemContext* context);
995
999 virtual void _endFrame(void) = 0;
1007 virtual void _setViewport(Viewport *vp) = 0;
1009 virtual Viewport* _getViewport(void);
1010
1022 virtual void _setCullingMode(CullingMode mode) = 0;
1023
1024 virtual CullingMode _getCullingMode(void) const;
1025
1039 virtual void _setDepthBufferParams(bool depthTest = true, bool depthWrite = true, CompareFunction depthFunction = CMPF_LESS_EQUAL) = 0;
1040
1045 virtual void _setDepthBufferCheckEnabled(bool enabled = true) = 0;
1050 virtual void _setDepthBufferWriteEnabled(bool enabled = true) = 0;
1058 virtual void _setDepthBufferFunction(CompareFunction func = CMPF_LESS_EQUAL) = 0;
1066 virtual void _setColourBufferWriteEnabled(bool red, bool green, bool blue, bool alpha) = 0;
1089 virtual void _setDepthBias(float constantBias, float slopeScaleBias = 0.0f) = 0;
1101 virtual void _setFog(FogMode mode = FOG_NONE, const ColourValue& colour = ColourValue::White, Real expDensity = 1.0, Real linearStart = 0.0, Real linearEnd = 1.0) = 0;
1102
1103
1105 virtual void _beginGeometryCount(void);
1107 virtual unsigned int _getFaceCount(void) const;
1109 virtual unsigned int _getBatchCount(void) const;
1111 virtual unsigned int _getVertexCount(void) const;
1112
1121 virtual void convertColourValue(const ColourValue& colour, uint32* pDest);
1126
1133 virtual void _convertProjectionMatrix(const Matrix4& matrix,
1134 Matrix4& dest, bool forGpuProgram = false) = 0;
1135
1142 virtual void _makeProjectionMatrix(const Radian& fovy, Real aspect, Real nearPlane, Real farPlane,
1143 Matrix4& dest, bool forGpuProgram = false) = 0;
1144
1151 virtual void _makeProjectionMatrix(Real left, Real right, Real bottom, Real top,
1152 Real nearPlane, Real farPlane, Matrix4& dest, bool forGpuProgram = false) = 0;
1159 virtual void _makeOrthoMatrix(const Radian& fovy, Real aspect, Real nearPlane, Real farPlane,
1160 Matrix4& dest, bool forGpuProgram = false) = 0;
1161
1178 virtual void _applyObliqueDepthProjection(Matrix4& matrix, const Plane& plane,
1179 bool forGpuProgram) = 0;
1180
1182 virtual void _setPolygonMode(PolygonMode level) = 0;
1183
1190 virtual void setStencilCheckEnabled(bool enabled) = 0;
1206 /*virtual bool hasHardwareStencil(void) = 0;*/
1207
1246 virtual void setStencilBufferParams(CompareFunction func = CMPF_ALWAYS_PASS,
1247 uint32 refValue = 0, uint32 compareMask = 0xFFFFFFFF, uint32 writeMask = 0xFFFFFFFF,
1248 StencilOperation stencilFailOp = SOP_KEEP,
1249 StencilOperation depthFailOp = SOP_KEEP,
1250 StencilOperation passOp = SOP_KEEP,
1251 bool twoSidedOperation = false) = 0;
1252
1253
1254
1259
1270 virtual void setNormaliseNormals(bool normalise) = 0;
1271
1284 virtual void _render(const RenderOperation& op);
1285
1287 const RenderSystemCapabilities* getCapabilities(void) const { return mCurrentCapabilities; }
1288
1289
1292 virtual const DriverVersion& getDriverVersion(void) const { return mDriverVersion; }
1293
1303 virtual const String& _getDefaultViewportMaterialScheme(void) const;
1304
1309 virtual void bindGpuProgram(GpuProgram* prg);
1310
1317 GpuProgramParametersSharedPtr params, uint16 variabilityMask) = 0;
1318
1326 virtual void unbindGpuProgram(GpuProgramType gptype);
1327
1329 virtual bool isGpuProgramBound(GpuProgramType gptype);
1330
1336 uint16 getNativeShadingLanguageVersion() const { return mNativeShadingLanguageVersion; }
1337
1340 virtual void setClipPlanes(const PlaneList& clipPlanes);
1341
1343 virtual void addClipPlane (const Plane &p);
1345 virtual void addClipPlane (Real A, Real B, Real C, Real D);
1346
1349 virtual void resetClipPlanes();
1350
1352 virtual void _initRenderTargets(void);
1353
1357 virtual void _notifyCameraRemoved(const Camera* cam);
1358
1360 virtual void _updateAllRenderTargets(bool swapBuffers = true);
1364
1367 virtual void setInvertVertexWinding(bool invert);
1368
1372 virtual bool getInvertVertexWinding(void) const;
1373
1385 virtual void setScissorTest(bool enabled, size_t left = 0, size_t top = 0,
1386 size_t right = 800, size_t bottom = 600) = 0;
1387
1395 virtual void clearFrameBuffer(unsigned int buffers,
1396 const ColourValue& colour = ColourValue::Black,
1397 Real depth = 1.0f, unsigned short stencil = 0) = 0;
1417 virtual Real getVerticalTexelOffset(void) = 0;
1418
1442 virtual void setCurrentPassIterationCount(const size_t count) { mCurrentPassIterationCount = count; }
1443
1453 virtual void setDeriveDepthBias(bool derive, float baseValue = 0.0f,
1454 float multiplier = 0.0f, float slopeScale = 0.0f)
1455 {
1456 mDerivedDepthBias = derive;
1457 mDerivedDepthBiasBase = baseValue;
1458 mDerivedDepthBiasMultiplier = multiplier;
1459 mDerivedDepthBiasSlopeScale = slopeScale;
1460 }
1461
1465 virtual void _setRenderTarget(RenderTarget *target) = 0;
1466
1472 {
1473 public:
1475 virtual ~Listener() {}
1476
1482 virtual void eventOccurred(const String& eventName,
1483 const NameValuePairList* parameters = 0) = 0;
1484 };
1498 virtual void addListener(Listener* l);
1501 virtual void removeListener(Listener* l);
1502
1507 virtual const StringVector& getRenderSystemEvents(void) const { return mEventNames; }
1508
1525 virtual void preExtraThreadsStarted() = 0;
1526
1527 /* Tell the rendersystem to perform any tasks it needs to directly
1528 after other threads which might access the rendering API are registered.
1529 @see RenderSystem::preExtraThreadsStarted
1530 */
1531 virtual void postExtraThreadsStarted() = 0;
1532
1545 virtual void registerThread() = 0;
1546
1550 virtual void unregisterThread() = 0;
1551
1556 virtual unsigned int getDisplayMonitorCount() const = 0;
1557
1561 virtual void beginProfileEvent( const String &eventName ) = 0;
1562
1566 virtual void endProfileEvent( void ) = 0;
1567
1572 virtual void markProfileEvent( const String &event ) = 0;
1573
1576 virtual bool hasAnisotropicMipMapFilter() const = 0;
1577
1583 virtual void getCustomAttribute(const String& name, void* pData);
1584
1585 protected:
1586
1589
1596
1604
1605 // Texture manager
1606 // A concrete class of this will be created and
1607 // made available under the TextureManager singleton,
1608 // managed by the RenderSystem
1610
1611 // Active viewport (dest for future rendering operations)
1613
1615
1617
1621
1623 ColourValue mManualBlendColours[OGRE_MAX_TEXTURE_LAYERS][2];
1624
1626
1629
1638
1645
1648
1654
1657
1659 virtual void fireEvent(const String& name, const NameValuePairList* params = 0);
1660
1663
1666
1673
1674 // Recording user clip planes
1676 // Indicator that we need to re-set the clip planes on next render call
1678
1683
1685 virtual void setClipPlanesImpl(const PlaneList& clipPlanes) = 0;
1686
1689
1690
1693
1696
1697
1698
1699 };
1702}
1703
1704#include "OgreHeaderSuffix.h"
1705
1706#endif
#define OGRE_MAX_TEXTURE_LAYERS
Define max number of texture layers allowed per pass on any card.
Definition OgreConfig.h:72
#define _OgreExport
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
A viewpoint from which the scene will be rendered.
Definition OgreCamera.h:87
Class representing colour.
An abstract class that contains a depth/stencil buffer.
A frustum represents a pyramid, capped at the near and far end which is used to represent either a vi...
Definition OgreFrustum.h:86
Defines a program which runs on the GPU such as a vertex or fragment program.
This is a abstract class that that provides the interface for the query class for hardware occlusion.
Shared pointer implementation used to share vertex buffers.
Class which manages blending of both colour and alpha components.
Concrete IteratorWrapper for nonconst access to the underlying key-value container.
Class encapsulating a standard 4x4 homogeneous matrix.
Definition OgreMatrix4.h:79
This class represents a render target that renders to multiple RenderTextures at once.
Defines a plane in 3D space.
Definition OgrePlane.h:62
Wrapper class which indicates a given angle value is in Radians.
Definition OgreMath.h:48
'New' rendering operation using vertex buffers.
singleton class for storing the capabilities of the graphics card.
Defines a listener on the custom events that this render system can raise.
virtual void eventOccurred(const String &eventName, const NameValuePairList *parameters=0)=0
A rendersystem-specific event occurred.
Defines the functionality of a 3D API.
virtual void _setSeparateSceneBlending(SceneBlendFactor sourceFactor, SceneBlendFactor destFactor, SceneBlendFactor sourceFactorAlpha, SceneBlendFactor destFactorAlpha, SceneBlendOperation op=SBO_ADD, SceneBlendOperation alphaOp=SBO_ADD)=0
Sets the global blending factors for combining subsequent renders with the existing frame contents.
virtual bool areFixedFunctionLightsInViewSpace() const
Are fixed-function lights provided in view space? Affects optimisation.
virtual void _setDepthBufferWriteEnabled(bool enabled=true)=0
Sets whether or not the depth buffer is updated after a pixel write.
list< Listener * >::type ListenerList
virtual MultiRenderTarget * createMultiRenderTarget(const String &name)=0
Create a MultiRenderTarget, which is a render target that renders to multiple RenderTextures at once.
void setWBufferEnabled(bool enabled)
Sets whether or not W-buffers are enabled if they are available for this renderer.
virtual void unbindGpuProgram(GpuProgramType gptype)
Unbinds GpuPrograms of a given GpuProgramType.
virtual void _disableTextureUnit(size_t texUnit)
Turns off a texture unit.
virtual RenderWindow * _createRenderWindow(const String &name, unsigned int width, unsigned int height, bool fullScreen, const NameValuePairList *miscParams=0)=0
Creates a new rendering window.
virtual void setInvertVertexWinding(bool invert)
Sets whether or not vertex windings set should be inverted; this can be important for rendering refle...
virtual void _setTextureMatrix(size_t unit, const Matrix4 &xform)=0
Sets the texture coordinate transformation matrix for a texture unit.
virtual bool getInvertVertexWinding(void) const
Indicates whether or not the vertex windings set will be inverted for the current render (e....
virtual RenderTarget * detachRenderTarget(const String &name)
Detaches the render target with the passed name from the render system and returns a pointer to it.
virtual void _setColourBufferWriteEnabled(bool red, bool green, bool blue, bool alpha)=0
Sets whether or not colour buffer writing is enabled, and for which channels.
virtual void _setPolygonMode(PolygonMode level)=0
Sets how to rasterise triangles, as points, wireframe or solid polys.
size_t mCurrentPassIterationCount
Number of times to render the current state.
virtual Real getVerticalTexelOffset(void)=0
Returns the vertical texel offset value required for mapping texel origins to pixel origins in this r...
virtual Real getMaximumDepthInputValue(void)=0
Gets the maximum (farthest) depth value to be used when rendering using identity transforms.
virtual bool isGpuProgramBound(GpuProgramType gptype)
Returns whether or not a Gpu program of the given type is currently bound.
virtual void endProfileEvent(void)=0
Ends the currently active GPU profiling event.
VertexDeclaration * getGlobalInstanceVertexBufferVertexDeclaration() const
Gets vertex declaration for the global vertex buffer for the global instancing.
virtual void _setTextureUnitFiltering(size_t unit, FilterType ftype, FilterOptions filter)=0
Sets a single filter for a given texture unit.
virtual bool _createRenderWindows(const RenderWindowDescriptionList &renderWindowDescriptions, RenderWindowList &createdWindows)
Creates multiple rendering windows.
virtual void setCurrentPassIterationCount(const size_t count)
set the current multi pass count value.
virtual void _setDepthBufferCheckEnabled(bool enabled=true)=0
Sets whether or not the depth buffer check is performed before a pixel write.
virtual RenderSystemContext * _pauseFrame(void)
Pause rendering for a frame.
virtual void setClipPlanes(const PlaneList &clipPlanes)
Sets the user clipping region.
virtual bool hasAnisotropicMipMapFilter() const =0
Determines if the system has anisotropic mipmap filter support.
GpuProgramParametersSharedPtr mActiveComputeGpuProgramParameters
virtual void _setFog(FogMode mode=FOG_NONE, const ColourValue &colour=ColourValue::White, Real expDensity=1.0, Real linearStart=0.0, Real linearEnd=1.0)=0
Sets the fogging mode for future geometry.
bool getFixedPipelineEnabled(void) const
Returns true if fixed pipeline rendering is enabled on the system.
DriverVersion mDriverVersion
GpuProgramParametersSharedPtr mActiveTesselationHullGpuProgramParameters
virtual void _setTexture(size_t unit, bool enabled, const TexturePtr &texPtr)=0
Sets the texture to bind to a given texture unit.
GpuProgramParametersSharedPtr mActiveGeometryGpuProgramParameters
virtual RenderTargetIterator getRenderTargetIterator(void)
Returns a specialised MapIterator over all render targets attached to the RenderSystem.
virtual void addClipPlane(Real A, Real B, Real C, Real D)
Add a user clipping plane.
virtual bool isStaticBufferLockable() const
virtual void reinitialise(void)=0
Restart the renderer (normally following a change in settings).
RenderSystem()
Default Constructor.
virtual void _setTextureBlendMode(size_t unit, const LayerBlendModeEx &bm)=0
Sets the texture blend modes from a TextureUnitState record.
virtual void destroyRenderTexture(const String &name)
Destroys a render texture.
virtual void _beginGeometryCount(void)
The RenderSystem will keep a count of tris rendered, this resets the count.
virtual RenderSystemCapabilities * createRenderSystemCapabilities() const =0
Query the real capabilities of the GPU and driver in the RenderSystem.
RenderTarget * mActiveRenderTarget
The Active render target.
void setGlobalNumberOfInstances(const size_t val)
Sets the global number of instances.
virtual RenderWindow * _initialise(bool autoCreateWindow, const String &windowTitle="OGRE Render Window")
Start up the renderer using the settings selected (Or the defaults if none have been selected).
virtual void destroyRenderTarget(const String &name)
Destroys a render target of any sort.
list< HardwareOcclusionQuery * >::type HardwareOcclusionQueryList
virtual void postExtraThreadsStarted()=0
virtual void resetClipPlanes()
Clears the user clipping region.
virtual unsigned int _getVertexCount(void) const
Reports the number of vertices passed to the renderer since the last _beginGeometryCount call.
virtual void _setDepthBufferParams(bool depthTest=true, bool depthWrite=true, CompareFunction depthFunction=CMPF_LESS_EQUAL)=0
Sets the mode of operation for depth buffer tests from this point onwards.
virtual void setStencilCheckEnabled(bool enabled)=0
Turns stencil buffer checking on or off.
void _cleanupDepthBuffers(bool bCleanManualBuffers=true)
Removes all depth buffers.
virtual void _setDepthBias(float constantBias, float slopeScaleBias=0.0f)=0
Sets the depth bias, NB you should use the Material version of this.
virtual void _setDepthBufferFunction(CompareFunction func=CMPF_LESS_EQUAL)=0
Sets the comparison function for the depth buffer check.
virtual void _setTextureUnitCompareFunction(size_t unit, CompareFunction function)=0
Sets the compare function to use for a given texture unit.
virtual void setLightingEnabled(bool enabled)=0
Sets whether or not dynamic lighting is enabled.
virtual Real getMinimumDepthInputValue(void)=0
Gets the minimum (closest) depth value to be used when rendering using identity transforms.
GpuProgramParametersSharedPtr mActiveFragmentGpuProgramParameters
HardwareVertexBufferSharedPtr mGlobalInstanceVertexBuffer
Global vertex buffer for global instancing.
RenderTargetMap mRenderTargets
The render targets.
virtual void setShadingType(ShadeOptions so)=0
Sets the type of light shading required (default = Gouraud).
virtual void setVertexBufferBinding(VertexBufferBinding *binding)=0
Sets the current vertex buffer binding state.
virtual void setConfigOption(const String &name, const String &value)=0
Sets an option for this API.
virtual HardwareOcclusionQuery * createHardwareOcclusionQuery(void)=0
Create an object for performing hardware occlusion queries.
bool mEnableFixedPipeline
Indicator whether fixed pipeline is enabled.
virtual void useCustomRenderSystemCapabilities(RenderSystemCapabilities *capabilities)
Force the render system to use the special capabilities.
virtual void unregisterThread()=0
Unregister an additional thread which may make calls to rendersystem-related objects.
bool getWBufferEnabled(void) const
Returns true if the renderer will try to use W-buffers when available.
virtual void _render(const RenderOperation &op)
Render something to the active viewport.
virtual void destroyRenderWindow(const String &name)
Destroys a render window.
size_t mGlobalNumberOfInstances
Number of global instances (this number will be multiply by the render op instance number)
virtual void _setTextureAddressingMode(size_t unit, const TextureUnitState::UVWAddressingMode &uvw)=0
Sets the texture addressing mode for a texture unit.
virtual void _disableTextureUnitsFrom(size_t texUnit)
Disables all texture units from the given unit upwards.
virtual void bindGpuProgramParameters(GpuProgramType gptype, GpuProgramParametersSharedPtr params, uint16 variabilityMask)=0
Bind Gpu program parameters.
RenderTargetPriorityMap mPrioritisedRenderTargets
The render targets, ordered by priority.
virtual void _setAlphaRejectSettings(CompareFunction func, unsigned char value, bool alphaToCoverage)=0
Sets the global alpha rejection approach for future renders.
virtual const String & _getDefaultViewportMaterialScheme(void) const
Returns the default material scheme used by the render system.
virtual void _setPointParameters(Real size, bool attenuationEnabled, Real constant, Real linear, Real quadratic, Real minSize, Real maxSize)=0
Sets the size of points and how they are attenuated with distance.
virtual Real getHorizontalTexelOffset(void)=0
Returns the horizontal texel offset value required for mapping texel origins to pixel origins in this...
RenderSystemCapabilities * getMutableCapabilities()
Get a pointer to the current capabilities being used by the RenderSystem.
virtual VertexElementType getColourVertexElementType(void) const =0
Get the native VertexElementType for a compact 32-bit colour value for this rendersystem.
virtual void fireEvent(const String &name, const NameValuePairList *params=0)
Internal method for firing a rendersystem event.
void setFixedPipelineEnabled(bool enabled)
Sets if fixed pipeline rendering is enabled on the system.
RenderSystemCapabilities * mCurrentCapabilities
virtual void preExtraThreadsStarted()=0
Tell the rendersystem to perform any prep tasks it needs to directly before other threads which might...
virtual ~RenderSystem()
Destructor.
HardwareOcclusionQueryList mHwOcclusionQueries
virtual DepthBuffer * _createDepthBufferFor(RenderTarget *renderTarget)=0
Creates a DepthBuffer that can be attached to the specified RenderTarget.
virtual void _setPointSpritesEnabled(bool enabled)=0
Sets whether or not rendering points using OT_POINT_LIST will render point sprites (textured quads) o...
virtual void _setViewport(Viewport *vp)=0
Sets the provided viewport as the active one for future rendering operations.
virtual void removeListener(Listener *l)
Remove a listener to the custom events that this render system can raise.
virtual void _beginFrame(void)=0
Signifies the beginning of a frame, i.e.
virtual void convertColourValue(const ColourValue &colour, uint32 *pDest)
Generates a packed data version of the passed in ColourValue suitable for use as with this RenderSyst...
TextureManager * mTextureManager
virtual void _setCullingMode(CullingMode mode)=0
Sets the culling mode for the render system based on the 'vertex winding'.
virtual void _initRenderTargets(void)
Utility method for initialising all render targets attached to this rendering system.
virtual String getErrorDescription(long errorNumber) const =0
Returns a description of an error code.
virtual void setVertexDeclaration(VertexDeclaration *decl)=0
Sets the current vertex declaration, ie the source of vertex data.
virtual void _applyObliqueDepthProjection(Matrix4 &matrix, const Plane &plane, bool forGpuProgram)=0
Update a perspective projection matrix to use 'oblique depth projection'.
void setGlobalInstanceVertexBuffer(const HardwareVertexBufferSharedPtr &val)
Sets the global instance vertex buffer.
bool updatePassIterationRenderState(void)
Updates pass iteration rendering state including bound Gpu program parameter pass iteration auto cons...
virtual void _setViewMatrix(const Matrix4 &m)=0
Sets the view transform matrix.
virtual void _updateAllRenderTargets(bool swapBuffers=true)
Internal method for updating all render targets attached to this rendering system.
virtual void _setTextureCoordCalculation(size_t unit, TexCoordCalcMethod m, const Frustum *frustum=0)=0
Sets a method for automatically calculating texture coordinates for a stage.
virtual void _setTextureProjectionRelativeTo(bool enabled, const Vector3 &pos)
Notify the rendersystem that it should adjust texture projection to be relative to a different origin...
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 ...
virtual void _setWorldMatrices(const Matrix4 *m, unsigned short count)
Sets multiple world matrices (vertex blending).
virtual void _setProjectionMatrix(const Matrix4 &m)=0
Sets the projection transform matrix.
virtual void _setWorldMatrix(const Matrix4 &m)=0
Sets the world transform matrix.
virtual void getCustomAttribute(const String &name, void *pData)
Gets a custom (maybe platform-specific) attribute.
virtual void _setSceneBlending(SceneBlendFactor sourceFactor, SceneBlendFactor destFactor, SceneBlendOperation op=SBO_ADD)=0
Sets the global blending factors for combining subsequent renders with the existing frame contents.
virtual void shutdown(void)
Shutdown the renderer and cleanup resources.
GpuProgramParametersSharedPtr mActiveTesselationDomainGpuProgramParameters
virtual void _setTextureMipmapBias(size_t unit, float bias)=0
Sets the mipmap bias value for a given texture unit.
size_t mDisabledTexUnitsFrom
Texture units from this upwards are disabled.
uint16 getNativeShadingLanguageVersion() const
Gets the native shading language version for this render system.
virtual void initialiseFromRenderSystemCapabilities(RenderSystemCapabilities *caps, RenderTarget *primary)=0
Initialize the render system from the capabilities.
virtual void _makeOrthoMatrix(const Radian &fovy, Real aspect, Real nearPlane, Real farPlane, Matrix4 &dest, bool forGpuProgram=false)=0
Builds an orthographic projection matrix suitable for this render system.
virtual void _makeProjectionMatrix(Real left, Real right, Real bottom, Real top, Real nearPlane, Real farPlane, Matrix4 &dest, bool forGpuProgram=false)=0
Builds a perspective projection matrix for the case when frustum is not centered around camera.
RenderSystemCapabilities * mRealCapabilities
Used to store the capabilities of the graphics card.
virtual void setClipPlanesImpl(const PlaneList &clipPlanes)=0
Internal method used to set the underlying clip planes when needed.
const RenderSystemCapabilities * getCapabilities(void) const
Gets the capabilities of the render system.
virtual void setNormaliseNormals(bool normalise)=0
Sets whether or not normals are to be automatically normalised.
virtual void _setTexture(size_t unit, bool enabled, const String &texname)
Sets the texture to bind to a given texture unit.
virtual void markProfileEvent(const String &event)=0
Marks an instantaneous event for graphics profilers.
virtual unsigned int getDisplayMonitorCount() const =0
Gets the number of display monitors.
virtual void _endFrame(void)=0
Ends rendering of a frame to the current viewport.
virtual void registerThread()=0
Register the an additional thread which may make calls to rendersystem-related objects.
virtual void clearFrameBuffer(unsigned int buffers, const ColourValue &colour=ColourValue::Black, Real depth=1.0f, unsigned short stencil=0)=0
Clears one or more frame buffers on the active render target.
virtual void setAmbientLight(float r, float g, float b)=0
Sets the colour & strength of the ambient (global directionless) light in the world.
virtual String validateConfigOptions(void)=0
Validates the options set for the rendering system, returning a message if there are problems.
StringVector mEventNames
List of names of events this rendersystem may raise.
virtual RenderTarget * getRenderTarget(const String &name)
Returns a pointer to the render target with the passed name, or NULL if that render target cannot be ...
void setGlobalInstanceVertexBufferVertexDeclaration(VertexDeclaration *val)
Sets vertex declaration for the global vertex buffer for the global instancing.
virtual void _setTextureLayerAnisotropy(size_t unit, unsigned int maxAnisotropy)=0
Sets the maximal anisotropy for the specified texture unit.
MapIterator< Ogre::RenderTargetMap > RenderTargetIterator
Iterator over RenderTargets.
virtual void addClipPlane(const Plane &p)
Add a user clipping plane.
virtual void _resumeFrame(RenderSystemContext *context)
Resume rendering for a frame.
virtual unsigned int _getFaceCount(void) const
Reports the number of tris rendered since the last _beginGeometryCount call.
DepthBufferMap mDepthBufferPool
DepthBuffers to be attached to render targets.
virtual unsigned int _getBatchCount(void) const
Reports the number of batches rendered since the last _beginGeometryCount call.
virtual void destroyHardwareOcclusionQuery(HardwareOcclusionQuery *hq)
Destroy a hardware occlusion query object.
virtual void _setRenderTarget(RenderTarget *target)=0
Set current render target to target, enabling its device context if needed.
virtual const DriverVersion & getDriverVersion(void) const
Returns the driver version.
virtual void _useLights(const LightList &lights, unsigned short limit)=0
Tells the rendersystem to use the attached set of lights (and no others) up to the number specified (...
virtual void setDepthBufferFor(RenderTarget *renderTarget)
Retrieves an existing DepthBuffer or creates a new one suited for the given RenderTarget and sets it.
VertexDeclaration * mGlobalInstanceVertexBufferVertexDeclaration
Vertex declaration for the global vertex buffer for the global instancing.
virtual void _setSurfaceParams(const ColourValue &ambient, const ColourValue &diffuse, const ColourValue &specular, const ColourValue &emissive, Real shininess, TrackVertexColourType tracking=TVC_NONE)=0
Sets the surface properties to be used for future rendering.
virtual CullingMode _getCullingMode(void) const
virtual Viewport * _getViewport(void)
Get the current active viewport for rendering.
virtual void beginProfileEvent(const String &eventName)=0
This marks the beginning of an event for GPU profiling.
ListenerList mEventListeners
bool mDerivedDepthBias
Indicator whether to update the depth bias per render call.
virtual void _makeProjectionMatrix(const Radian &fovy, Real aspect, Real nearPlane, Real farPlane, Matrix4 &dest, bool forGpuProgram=false)=0
Builds a perspective projection matrix suitable for this render system.
virtual void _setTextureUnitSettings(size_t texUnit, TextureUnitState &tl)
Utility function for setting all the properties of a texture unit at once.
virtual void _setTextureBorderColour(size_t unit, const ColourValue &colour)=0
Sets the texture border colour for a texture unit.
virtual void _setTextureCoordSet(size_t unit, size_t index)=0
Sets the texture coordinate set to use for a texture unit.
virtual void _setTextureUnitCompareEnabled(size_t unit, bool compare)=0
Sets whether the compare func is enabled or not for this texture unit.
virtual void addListener(Listener *l)
Adds a listener to the custom events that this render system can raise.
virtual void _setTextureUnitFiltering(size_t unit, FilterOptions minFilter, FilterOptions magFilter, FilterOptions mipFilter)
Sets the filtering options for a given texture unit.
virtual void _convertProjectionMatrix(const Matrix4 &matrix, Matrix4 &dest, bool forGpuProgram=false)=0
Converts a uniform projection matrix to suitable for this render system.
virtual void setScissorTest(bool enabled, size_t left=0, size_t top=0, size_t right=800, size_t bottom=600)=0
Sets the 'scissor region' i.e.
virtual void bindGpuProgramPassIterationParameters(GpuProgramType gptype)=0
Only binds Gpu program parameters used for passes that have more than one iteration rendering.
virtual void attachRenderTarget(RenderTarget &target)
Attaches the passed render target to the render system.
HardwareVertexBufferSharedPtr getGlobalInstanceVertexBuffer() const
Returns the global instance vertex buffer.
virtual void bindGpuProgram(GpuProgram *prg)
Binds a given GpuProgram (but not the parameters).
GpuProgramParametersSharedPtr mActiveVertexGpuProgramParameters
The Active Gpu programs and Gpu program parameters.
virtual void setStencilBufferParams(CompareFunction func=CMPF_ALWAYS_PASS, uint32 refValue=0, uint32 compareMask=0xFFFFFFFF, uint32 writeMask=0xFFFFFFFF, StencilOperation stencilFailOp=SOP_KEEP, StencilOperation depthFailOp=SOP_KEEP, StencilOperation passOp=SOP_KEEP, bool twoSidedOperation=false)=0
Determines if this system supports hardware accelerated stencil buffer.
virtual ConfigOptionMap & getConfigOptions(void)=0
Returns the details of this API's configuration options.
virtual const StringVector & getRenderSystemEvents(void) const
Gets a list of the rendersystem specific events that this rendersystem can raise.
virtual void _notifyCameraRemoved(const Camera *cam)
Utility method to notify all render targets that a camera has been removed, in case they were referri...
virtual const String & getName(void) const =0
Returns the name of the rendering system.
virtual void _setVertexTexture(size_t unit, const TexturePtr &tex)
Binds a texture to a vertex sampler.
size_t getGlobalNumberOfInstances() const
Gets the global number of instances.
virtual void _swapAllRenderTargetBuffers()
Internal method for swapping all the buffers on all render targets, if _updateAllRenderTargets was ca...
A 'canvas' which can receive the results of a rendering operation.
Manages the target rendering window.
Class for loading & managing textures.
Class representing the state of a single texture unit during a Pass of a Technique,...
Standard 3-dimensional vector.
Definition OgreVector3.h:52
Records the state of all the vertex buffer bindings required to provide a vertex declaration with the...
This class declares the format of a set of vertex inputs, which can be issued to the rendering API th...
An abstraction of a viewport, i.e.
CompareFunction
Comparison functions used for the depth/stencil buffer operations and others.
Definition OgreCommon.h:65
FilterOptions
Filtering options for textures / mipmaps.
Definition OgreCommon.h:101
vector< String >::type StringVector
map< String, String >::type NameValuePairList
Name / value parameter pair (first = name, second = value)
Definition OgreCommon.h:550
vector< RenderWindow * >::type RenderWindowList
Render window container.
Definition OgreCommon.h:764
PolygonMode
The polygon mode to use when rasterising.
Definition OgreCommon.h:180
vector< RenderWindowDescription >::type RenderWindowDescriptionList
Render window creation parameters container.
Definition OgreCommon.h:761
ShadeOptions
Light shading modes.
Definition OgreCommon.h:114
FogMode
Fog modes.
Definition OgreCommon.h:122
CullingMode
Hardware culling modes based on vertex winding.
Definition OgreCommon.h:136
FilterType
Definition OgreCommon.h:91
int TrackVertexColourType
An enumeration describing which material properties should track the vertex colours.
Definition OgreCommon.h:276
map< String, ConfigOption >::type ConfigOptionMap
SceneBlendFactor
Blending factors for manually blending objects with the scene.
SceneBlendOperation
Blending operations controls how objects are blended into the scene.
vector< Plane >::type PlaneList
Definition OgrePlane.h:160
VertexElementType
Vertex element type, used to identify the base types of the vertex contents.
map< uint16, DepthBufferVec >::type DepthBufferMap
multimap< uchar, RenderTarget * >::type RenderTargetPriorityMap
map< String, RenderTarget * >::type RenderTargetMap
TexCoordCalcMethod
Enum describing the ways to generate texture coordinates.
vector< DepthBuffer * >::type DepthBufferVec
StencilOperation
Enum describing the various actions which can be taken on the stencil buffer.
@ TEXCALC_ENVIRONMENT_MAP
Environment map based on vertex normals.
@ TEXCALC_ENVIRONMENT_MAP_PLANAR
Environment map based on vertex positions.
@ TEXCALC_NONE
No calculated texture coordinates.
@ TEXCALC_ENVIRONMENT_MAP_NORMAL
@ TEXCALC_PROJECTIVE_TEXTURE
Projective texture.
@ TEXCALC_ENVIRONMENT_MAP_REFLECTION
@ SOP_INVERT
Invert the bits of the stencil buffer.
@ SOP_INCREMENT_WRAP
Increase the stencil value by 1, wrapping back to 0 when incrementing the maximum value.
@ SOP_DECREMENT
Decrease the stencil value by 1, clamping at 0.
@ SOP_ZERO
Set the stencil value to zero.
@ SOP_DECREMENT_WRAP
Decrease the stencil value by 1, wrapping when decrementing 0.
@ SOP_KEEP
Leave the stencil buffer unchanged.
@ SOP_REPLACE
Set the stencil value to the reference value.
@ SOP_INCREMENT
Increase the stencil value by 1, clamping at the maximum value.
GpuProgramType
Enumerates the types of programs which can run on the GPU.
float Real
Software floating point type.
unsigned short uint16
unsigned int uint32
_StringBase String
DriverVersion is used by RenderSystemCapabilities and both GL and D3D9 to store the version of the cu...
Texture addressing mode for each texture coordinate.
std::list< T, A > type
std::multimap< K, V, P, A > type
std::vector< T, A > type