28 #ifndef __RenderSystem_H_
29 #define __RenderSystem_H_
134 virtual const String& getName(
void)
const = 0;
178 virtual void setConfigOption(
const String &name,
const String &value) = 0;
192 virtual String validateConfigOptions(
void) = 0;
210 virtual RenderWindow* _initialise(
bool autoCreateWindow,
const String& windowTitle =
"OGRE Render Window");
226 virtual void reinitialise(
void) = 0;
230 virtual void shutdown(
void);
235 virtual void setAmbientLight(
float r,
float g,
float b) = 0;
246 virtual void setLightingEnabled(
bool enabled) = 0;
254 void setWBufferEnabled(
bool enabled);
258 bool getWBufferEnabled(
void)
const;
466 virtual RenderWindow* _createRenderWindow(
const String &name,
unsigned int width,
unsigned int height,
495 virtual void destroyRenderWindow(
const String& name);
497 virtual void destroyRenderTexture(
const String& name);
499 virtual void destroyRenderTarget(
const String& name);
503 virtual void attachRenderTarget(
RenderTarget &target );
524 virtual String getErrorDescription(
long errorNumber)
const = 0;
539 void setWaitForVerticalBlank(
bool enabled);
543 bool getWaitForVerticalBlank(
void)
const;
555 virtual void _useLights(
const LightList& lights,
unsigned short limit) = 0;
560 virtual void _setWorldMatrix(
const Matrix4 &m) = 0;
562 virtual void _setWorldMatrices(
const Matrix4* m,
unsigned short count);
564 virtual void _setViewMatrix(
const Matrix4 &m) = 0;
566 virtual void _setProjectionMatrix(
const Matrix4 &m) = 0;
574 virtual void _disableTextureUnit(
size_t texUnit);
576 virtual void _disableTextureUnitsFrom(
size_t texUnit);
610 virtual void _setSurfaceParams(
const ColourValue &ambient,
620 virtual void _setPointSpritesEnabled(
bool enabled) = 0;
632 virtual void _setPointParameters(
Real size,
bool attenuationEnabled,
648 virtual void _setTexture(
size_t unit,
bool enabled,
663 virtual void _setTexture(
size_t unit,
bool enabled,
const String &texname);
674 virtual void _setVertexTexture(
size_t unit,
const TexturePtr& tex);
685 virtual void _setTextureCoordSet(
size_t unit,
size_t index) = 0;
695 const Frustum* frustum = 0) = 0;
703 virtual void _setTextureBlendMode(
size_t unit,
const LayerBlendModeEx& bm) = 0;
711 virtual void _setTextureUnitFiltering(
size_t unit,
FilterOptions minFilter,
722 virtual void _setTextureLayerAnisotropy(
size_t unit,
unsigned int maxAnisotropy) = 0;
728 virtual void _setTextureBorderColour(
size_t unit,
const ColourValue& colour) = 0;
738 virtual void _setTextureMipmapBias(
size_t unit,
float bias) = 0;
744 virtual void _setTextureMatrix(
size_t unit,
const Matrix4& xform) = 0;
779 virtual void _setAlphaRejectSettings(
CompareFunction func,
unsigned char value,
bool alphaToCoverage) = 0;
784 virtual void _setTextureProjectionRelativeTo(
bool enabled,
const Vector3& pos);
789 virtual void _beginFrame(
void) = 0;
811 virtual void _endFrame(
void) = 0;
819 virtual void _setViewport(
Viewport *vp) = 0;
821 virtual Viewport* _getViewport(
void);
834 virtual void _setCullingMode(
CullingMode mode) = 0;
857 virtual void _setDepthBufferCheckEnabled(
bool enabled =
true) = 0;
862 virtual void _setDepthBufferWriteEnabled(
bool enabled =
true) = 0;
878 virtual void _setColourBufferWriteEnabled(
bool red,
bool green,
bool blue,
bool alpha) = 0;
901 virtual void _setDepthBias(
float constantBias,
float slopeScaleBias = 0.0f) = 0;
917 virtual void _beginGeometryCount(
void);
919 virtual unsigned int _getFaceCount(
void)
const;
921 virtual unsigned int _getBatchCount(
void)
const;
923 virtual unsigned int _getVertexCount(
void)
const;
945 virtual void _convertProjectionMatrix(
const Matrix4& matrix,
946 Matrix4& dest,
bool forGpuProgram =
false) = 0;
954 virtual void _makeProjectionMatrix(
const Radian& fovy,
Real aspect,
Real nearPlane,
Real farPlane,
955 Matrix4& dest,
bool forGpuProgram =
false) = 0;
963 virtual void _makeProjectionMatrix(
Real left,
Real right,
Real bottom,
Real top,
964 Real nearPlane,
Real farPlane,
Matrix4& dest,
bool forGpuProgram =
false) = 0;
971 virtual void _makeOrthoMatrix(
const Radian& fovy,
Real aspect,
Real nearPlane,
Real farPlane,
972 Matrix4& dest,
bool forGpuProgram =
false) = 0;
990 virtual void _applyObliqueDepthProjection(
Matrix4& matrix,
const Plane& plane,
991 bool forGpuProgram) = 0;
994 virtual void _setPolygonMode(
PolygonMode level) = 0;
1002 virtual void setStencilCheckEnabled(
bool enabled) = 0;
1060 bool twoSidedOperation =
false) = 0;
1079 virtual void setNormaliseNormals(
bool normalise) = 0;
1107 virtual void bindGpuProgram(
GpuProgram* prg);
1119 virtual void bindGpuProgramPassIterationParameters(
GpuProgramType gptype) = 0;
1131 virtual void setClipPlanes(
const PlaneList& clipPlanes);
1134 virtual void addClipPlane (
const Plane &p);
1140 virtual void resetClipPlanes();
1143 virtual void _initRenderTargets(
void);
1148 virtual void _notifyCameraRemoved(
const Camera* cam);
1151 virtual void _updateAllRenderTargets(
bool swapBuffers =
true);
1154 virtual void _swapAllRenderTargetBuffers(
bool waitForVsync =
true);
1158 virtual void setInvertVertexWinding(
bool invert);
1163 virtual bool getInvertVertexWinding(
void)
const;
1176 virtual void setScissorTest(
bool enabled,
size_t left = 0,
size_t top = 0,
1177 size_t right = 800,
size_t bottom = 600) = 0;
1186 virtual void clearFrameBuffer(
unsigned int buffers,
1188 Real depth = 1.0f,
unsigned short stencil = 0) = 0;
1198 virtual Real getHorizontalTexelOffset(
void) = 0;
1208 virtual Real getVerticalTexelOffset(
void) = 0;
1218 virtual Real getMinimumDepthInputValue(
void) = 0;
1227 virtual Real getMaximumDepthInputValue(
void) = 0;
1245 float multiplier = 0.0f,
float slopeScale = 0.0f)
1247 mDerivedDepthBias = derive;
1248 mDerivedDepthBiasBase = baseValue;
1249 mDerivedDepthBiasMultiplier = multiplier;
1250 mDerivedDepthBiasSlopeScale = slopeScale;
1256 virtual void _setRenderTarget(
RenderTarget *target) = 0;
1273 virtual void eventOccurred(
const String& eventName,
1289 virtual void addListener(Listener* l);
1292 virtual void removeListener(Listener* l);
1316 virtual void preExtraThreadsStarted() = 0;
1322 virtual void postExtraThreadsStarted() = 0;
1336 virtual void registerThread() = 0;
1341 virtual void unregisterThread() = 0;
1347 virtual unsigned int getDisplayMonitorCount()
const = 0;
1402 bool updatePassIterationRenderState(
void);
1431 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.
TexCoordCalcMethod
Enum describing the ways to generate texture coordinates.
MapIterator< Ogre::RenderTargetMap > RenderTargetIterator
Iterator over RenderTargets.
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.
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.
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. ...
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
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
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