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;
513 virtual RenderWindow* _createRenderWindow(
const String &name,
unsigned int width,
unsigned int height,
542 virtual void destroyRenderWindow(
const String& name);
544 virtual void destroyRenderTexture(
const String& name);
546 virtual void destroyRenderTarget(
const String& name);
550 virtual void attachRenderTarget(
RenderTarget &target );
571 virtual String getErrorDescription(
long errorNumber)
const = 0;
587 size_t getGlobalNumberOfInstances()
const;
590 void setGlobalNumberOfInstances(
const size_t val);
594 void setFixedPipelineEnabled(
bool enabled);
598 bool getFixedPipelineEnabled(
void)
const;
605 virtual void setDepthBufferFor(
RenderTarget *renderTarget );
617 virtual void _useLights(
const LightList& lights,
unsigned short limit) = 0;
622 virtual void _setWorldMatrix(
const Matrix4 &m) = 0;
624 virtual void _setWorldMatrices(
const Matrix4* m,
unsigned short count);
626 virtual void _setViewMatrix(
const Matrix4 &m) = 0;
628 virtual void _setProjectionMatrix(
const Matrix4 &m) = 0;
636 virtual void _disableTextureUnit(
size_t texUnit);
638 virtual void _disableTextureUnitsFrom(
size_t texUnit);
672 virtual void _setSurfaceParams(
const ColourValue &ambient,
682 virtual void _setPointSpritesEnabled(
bool enabled) = 0;
694 virtual void _setPointParameters(
Real size,
bool attenuationEnabled,
710 virtual void _setTexture(
size_t unit,
bool enabled,
725 virtual void _setTexture(
size_t unit,
bool enabled,
const String &texname);
736 virtual void _setVertexTexture(
size_t unit,
const TexturePtr& tex);
747 virtual void _setTextureCoordSet(
size_t unit,
size_t index) = 0;
757 const Frustum* frustum = 0) = 0;
765 virtual void _setTextureBlendMode(
size_t unit,
const LayerBlendModeEx& bm) = 0;
773 virtual void _setTextureUnitFiltering(
size_t unit,
FilterOptions minFilter,
787 virtual void _setTextureUnitCompareEnabled(
size_t unit,
bool compare) = 0;
794 virtual void _setTextureUnitCompareFunction(
size_t unit,
CompareFunction function) = 0;
798 virtual void _setTextureLayerAnisotropy(
size_t unit,
unsigned int maxAnisotropy) = 0;
804 virtual void _setTextureBorderColour(
size_t unit,
const ColourValue& colour) = 0;
814 virtual void _setTextureMipmapBias(
size_t unit,
float bias) = 0;
820 virtual void _setTextureMatrix(
size_t unit,
const Matrix4& xform) = 0;
855 virtual void _setAlphaRejectSettings(
CompareFunction func,
unsigned char value,
bool alphaToCoverage) = 0;
860 virtual void _setTextureProjectionRelativeTo(
bool enabled,
const Vector3& pos);
878 void _cleanupDepthBuffers(
bool bCleanManualBuffers=
true );
884 virtual void _beginFrame(
void) = 0;
906 virtual void _endFrame(
void) = 0;
914 virtual void _setViewport(
Viewport *vp) = 0;
916 virtual Viewport* _getViewport(
void);
929 virtual void _setCullingMode(
CullingMode mode) = 0;
952 virtual void _setDepthBufferCheckEnabled(
bool enabled =
true) = 0;
957 virtual void _setDepthBufferWriteEnabled(
bool enabled =
true) = 0;
973 virtual void _setColourBufferWriteEnabled(
bool red,
bool green,
bool blue,
bool alpha) = 0;
996 virtual void _setDepthBias(
float constantBias,
float slopeScaleBias = 0.0f) = 0;
1012 virtual void _beginGeometryCount(
void);
1014 virtual unsigned int _getFaceCount(
void)
const;
1016 virtual unsigned int _getBatchCount(
void)
const;
1018 virtual unsigned int _getVertexCount(
void)
const;
1040 virtual void _convertProjectionMatrix(
const Matrix4& matrix,
1041 Matrix4& dest,
bool forGpuProgram =
false) = 0;
1049 virtual void _makeProjectionMatrix(
const Radian& fovy,
Real aspect,
Real nearPlane,
Real farPlane,
1050 Matrix4& dest,
bool forGpuProgram =
false) = 0;
1058 virtual void _makeProjectionMatrix(
Real left,
Real right,
Real bottom,
Real top,
1059 Real nearPlane,
Real farPlane,
Matrix4& dest,
bool forGpuProgram =
false) = 0;
1066 virtual void _makeOrthoMatrix(
const Radian& fovy,
Real aspect,
Real nearPlane,
Real farPlane,
1067 Matrix4& dest,
bool forGpuProgram =
false) = 0;
1085 virtual void _applyObliqueDepthProjection(
Matrix4& matrix,
const Plane& plane,
1086 bool forGpuProgram) = 0;
1089 virtual void _setPolygonMode(
PolygonMode level) = 0;
1097 virtual void setStencilCheckEnabled(
bool enabled) = 0;
1158 bool twoSidedOperation =
false) = 0;
1177 virtual void setNormaliseNormals(
bool normalise) = 0;
1210 virtual const String& _getDefaultViewportMaterialScheme(
void)
const;
1216 virtual void bindGpuProgram(
GpuProgram* prg);
1228 virtual void bindGpuProgramPassIterationParameters(
GpuProgramType gptype) = 0;
1247 virtual void setClipPlanes(
const PlaneList& clipPlanes);
1250 virtual void addClipPlane (
const Plane &p);
1256 virtual void resetClipPlanes();
1259 virtual void _initRenderTargets(
void);
1264 virtual void _notifyCameraRemoved(
const Camera* cam);
1267 virtual void _updateAllRenderTargets(
bool swapBuffers =
true);
1270 virtual void _swapAllRenderTargetBuffers();
1274 virtual void setInvertVertexWinding(
bool invert);
1279 virtual bool getInvertVertexWinding(
void)
const;
1292 virtual void setScissorTest(
bool enabled,
size_t left = 0,
size_t top = 0,
1293 size_t right = 800,
size_t bottom = 600) = 0;
1302 virtual void clearFrameBuffer(
unsigned int buffers,
1304 Real depth = 1.0f,
unsigned short stencil = 0) = 0;
1314 virtual Real getHorizontalTexelOffset(
void) = 0;
1324 virtual Real getVerticalTexelOffset(
void) = 0;
1334 virtual Real getMinimumDepthInputValue(
void) = 0;
1343 virtual Real getMaximumDepthInputValue(
void) = 0;
1361 float multiplier = 0.0f,
float slopeScale = 0.0f)
1363 mDerivedDepthBias = derive;
1364 mDerivedDepthBiasBase = baseValue;
1365 mDerivedDepthBiasMultiplier = multiplier;
1366 mDerivedDepthBiasSlopeScale = slopeScale;
1372 virtual void _setRenderTarget(
RenderTarget *target) = 0;
1389 virtual void eventOccurred(
const String& eventName,
1405 virtual void addListener(Listener* l);
1408 virtual void removeListener(Listener* l);
1432 virtual void preExtraThreadsStarted() = 0;
1438 virtual void postExtraThreadsStarted() = 0;
1452 virtual void registerThread() = 0;
1457 virtual void unregisterThread() = 0;
1463 virtual unsigned int getDisplayMonitorCount()
const = 0;
1468 virtual void beginProfileEvent(
const String &eventName ) = 0;
1473 virtual void endProfileEvent(
void ) = 0;
1479 virtual void markProfileEvent(
const String &event ) = 0;
1483 virtual bool hasAnisotropicMipMapFilter()
const = 0;
1490 virtual void getCustomAttribute(
const String& name,
void* pData);
1560 bool updatePassIterationRenderState(
void);
1592 virtual void setClipPlanesImpl(
const PlaneList& clipPlanes) = 0;