00001 #ifndef __NYTRO_GraphicsProvider_H
00002 #define __NYTRO_GraphicsProvider_H
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "system/nyCommon.h"
00012 #include "system/nyProvider.h"
00013 #include "system/nyStats.h"
00014 #include "system/nyThread.h"
00015 #include "graphics/nyVideoDevice.h"
00016 #include "graphics/nyColor.h"
00017 #include "graphics/nyGeometryBuffer.h"
00018 #include "graphics/nyTexture.h"
00019 #include "graphics/nyShader.h"
00020 #include "graphics/nyRenderStateBlock.h"
00021 #include "graphics/nyRenderWindow.h"
00022 #include "math/nyMath.h"
00023 #include "scene/nyCamera.h"
00024 #include "scene/nyLight.h"
00025 #include "graphics/nyMeshBuilder.h"
00026 #include "system/nyEngineObserver.h"
00027
00028 namespace Nytro
00029 {
00030 namespace Scene
00031 {
00032 class Camera;
00033 class SceneNode;
00034 };
00035
00036 namespace Gui
00037 {
00038 class UiFontData;
00039 class UiRectangle;
00040 };
00041
00043 namespace Graphics
00044 {
00045 using namespace Gui;
00046 using namespace Scene;
00047
00049 class NYTRO_API AxisGizmo : public SceneNode
00050 {
00051 public:
00052
00054 enum EAxisGizmoFlag
00055 {
00056 eAxisGizmoFlag_TranslateX = NYTRO_BIT(0),
00057 eAxisGizmoFlag_TranslateY = NYTRO_BIT(1),
00058 eAxisGizmoFlag_TranslateZ = NYTRO_BIT(2),
00059 eAxisGizmoFlag_TranslateAxis = eAxisGizmoFlag_TranslateX | eAxisGizmoFlag_TranslateY | eAxisGizmoFlag_TranslateZ,
00060 eAxisGizmoFlag_TranslatePlaneXY = NYTRO_BIT(3),
00061 eAxisGizmoFlag_TranslatePlaneYZ = NYTRO_BIT(4),
00062 eAxisGizmoFlag_TranslatePlaneZX = NYTRO_BIT(5),
00063 eAxisGizmoFlag_TranslatePlanes = eAxisGizmoFlag_TranslatePlaneXY | eAxisGizmoFlag_TranslatePlaneYZ | eAxisGizmoFlag_TranslatePlaneZX,
00064 eAxisGizmoFlag_RotateX = NYTRO_BIT(6),
00065 eAxisGizmoFlag_RotateY = NYTRO_BIT(7),
00066 eAxisGizmoFlag_RotateZ = NYTRO_BIT(8),
00067 eAxisGizmoFlag_ScaleX = NYTRO_BIT(9),
00068 eAxisGizmoFlag_ScaleY = NYTRO_BIT(10),
00069 eAxisGizmoFlag_ScaleZ = NYTRO_BIT(11),
00070 eAxisGizmoFlag_All = eAxisGizmoFlag_TranslateAxis | eAxisGizmoFlag_TranslatePlanes
00071 };
00072
00073 AxisGizmo();
00074 ~AxisGizmo();
00075
00078 static float32 computeConstantScaleForPoint( Vector3D& rPos );
00079
00081 void computeMovePoint( Vector3D r2dPoint );
00083 float32 computeAxisScale();
00085 void checkHoveredElements( Vector3D r2dPoint );
00086
00087 float32 m_arrowSize, m_arrowBodySize, m_arrowAperture, m_arrowOffset;
00088 float32 m_rotationHandlesPosition, m_scaleHandlesPosition, m_rotationHandleRadius, m_scaleKnobSize;
00089 float32 m_axisSize, m_axisConeHeight, m_axisConeRadius, m_rotationSphereRadius,
00090 m_gizmoPlaneSize, m_axisScale, m_axisSizeInPixels;
00091 Color m_selectedPlaneColor, m_planeColor, m_selectedAxisColor;
00092 uint32 m_hoveredGizmoAxis, m_selectedGizmoAxis, m_axisConeSegments, m_sphereKnobSegments;
00093 Ray m_pickRay;
00094 Vector3D m_movePoint;
00095 bool m_bWorldMode, m_bDrawTranslateGizmo, m_bDrawScaleGizmo, m_bDrawRotationGizmo;
00096 vector<Vector3D> m_rotationAxisCirclePoints[3];
00097 float32 m_currentRotationAngle;
00098 };
00099
00101 class NYTRO_API TextRenderCache
00102 {
00103 public:
00104
00105 TextRenderCache();
00106 ~TextRenderCache();
00107
00108 void create();
00110 void resize( uint32 aSize );
00111 void updateCache();
00112
00113 GeometryBuffer* m_pGbText;
00114 UiFontData* m_pFont;
00115 wstring m_text;
00116 Color m_textColor;
00117 bool m_bWordWrap;
00118 uint32 m_maxTextChars;
00119 uint32 m_tabSize;
00120 float32 m_charSpacing, m_lineSpacing, m_tabCharWidth;
00121 uint32 m_textWidth, m_textHeight;
00122 };
00123
00125 class NYTRO_API GraphicsProvider : public Provider, public EngineObserver
00126 {
00127 public:
00128
00130 enum EGraphicsCapability
00131 {
00133 eGraphicsCapability_VolumeTexture,
00135 eGraphicsCapability_PixelShaderVersion,
00137 eGraphicsCapability_VertexShaderVersion,
00139 eGraphicsCapability_MaxTextureWidth,
00141 eGraphicsCapability_MaxTextureHeight,
00143 eGraphicsCapability_MaxVolumeTextureDepth,
00145 eGraphicsCapability_MaxTextureRepeat,
00147 eGraphicsCapability_MaxAnisotropy,
00149 eGraphicsCapability_MaxStages,
00151 eGraphicsCapability_MaxPointSize,
00153 eGraphicsCapability_MirrorTexture
00154 };
00155
00157 enum EAntialiasLevel
00158 {
00159 eAntialiasLevel_None,
00160 eAntialiasLevel_Low,
00161 eAntialiasLevel_Medium,
00162 eAntialiasLevel_High
00163 };
00164
00166 enum EBlendOp
00167 {
00168 eBlendOp_Zero,
00169 eBlendOp_One,
00170 eBlendOp_SrcColor,
00171 eBlendOp_InvSrcColor,
00172 eBlendOp_SrcAlpha,
00173 eBlendOp_InvSrcAlpha,
00174 eBlendOp_DstAlpha,
00175 eBlendOp_InvDstAlpha,
00176 eBlendOp_DstColor,
00177 eBlendOp_InvDstColor,
00178 eBlendOp_SrcAlphaSat
00179 };
00180
00182 enum ECmpFunc
00183 {
00184 eCmpFunc_Never,
00185 eCmpFunc_Less,
00186 eCmpFunc_Equal,
00187 eCmpFunc_LessEqual,
00188 eCmpFunc_Greater,
00189 eCmpFunc_NotEqual,
00190 eCmpFunc_GreaterEqual,
00191 eCmpFunc_Always
00192 };
00193
00195 enum ECullMode
00196 {
00197 eCullMode_None,
00198 eCullMode_CW,
00199 eCullMode_CCW
00200 };
00201
00203 enum EFillMode
00204 {
00205 eFillMode_Point,
00206 eFillMode_Wireframe,
00207 eFillMode_Solid
00208 };
00209
00211 enum EStencilOp
00212 {
00213 eStencilOp_Keep,
00214 eStencilOp_Zero,
00215 eStencilOp_Replace,
00216 eStencilOp_IncrSat,
00217 eStencilOp_DecrSat,
00218 eStencilOp_Invert,
00219 eStencilOp_Incr,
00220 eStencilOp_Decr
00221 };
00222
00224 enum EMatrixMode
00225 {
00226 eMatrixMode_View,
00227 eMatrixMode_World,
00228 eMatrixMode_World1,
00229 eMatrixMode_World2,
00230 eMatrixMode_World3,
00231 eMatrixMode_World4,
00232 eMatrixMode_World5,
00233 eMatrixMode_World6,
00234 eMatrixMode_World7,
00235 eMatrixMode_Projection,
00236 eMatrixMode_Texture,
00237 eMatrixMode_Texture1,
00238 eMatrixMode_Texture2,
00239 eMatrixMode_Texture3,
00240 eMatrixMode_Texture4,
00241 eMatrixMode_Texture5,
00242 eMatrixMode_Texture6,
00243 eMatrixMode_Texture7
00244 };
00245
00247 enum EClearBufferFlag
00248 {
00249 eClearBufferFlag_Depth = NYTRO_BIT(0),
00250 eClearBufferFlag_Color = NYTRO_BIT(1),
00251 eClearBufferFlag_Stencil = NYTRO_BIT(2),
00252 eClearBufferFlag_Accum = NYTRO_BIT(3)
00253 };
00254
00256 enum EHorizontalTextAlign
00257 {
00258 eHorizontalTextAlign_Left = NYTRO_BIT(0),
00259 eHorizontalTextAlign_Center = NYTRO_BIT(1),
00260 eHorizontalTextAlign_Right = NYTRO_BIT(2)
00261 };
00262
00264 enum EVerticalTextAlign
00265 {
00266 eVerticalTextAlign_Top = NYTRO_BIT(3),
00267 eVerticalTextAlign_Middle = NYTRO_BIT(4),
00268 eVerticalTextAlign_Bottom = NYTRO_BIT(5)
00269 };
00270
00272 enum EBlendingMode
00273 {
00274 eBlendingMode_None,
00275 eBlendingMode_Add,
00276 eBlendingMode_Multiply,
00277 eBlendingMode_Subtract,
00278 eBlendingMode_Alpha
00279 };
00280
00282 enum
00283 {
00284 eClassId_Texture,
00285 eClassId_Shader,
00286 eClassId_GeometryVertexBuffer,
00287 eClassId_GeometryIndexBuffer,
00288 eClassId_GeometryInstanceBuffer,
00289 eClassId_MoviePlayer,
00290 eClassId_StateBlock
00291 };
00292
00294 enum ERenderMessage
00295 {
00296 eRenderMessage_RenderGeometry,
00297 eRenderMessage_DrawImmediate,
00298 eRenderMessage_CreateClassInstance,
00299 eRenderMessage_UpdateData,
00300 eRenderMessage_SetState,
00301 eRenderMessage_SetTextureState
00302 };
00303
00305 class SystemTextureInfo
00306 {
00307 public:
00308
00309 SystemTextureInfo()
00310 {
00311 m_id = 0;
00312 m_pTexture = NULL;
00313 }
00314
00315 uint32 m_id;
00316 string m_name;
00317 Texture* m_pTexture;
00318 };
00319
00320 GraphicsProvider();
00321 virtual ~GraphicsProvider();
00322
00324 virtual float32 getGamma();
00326 virtual float32 getBrightness();
00328 virtual float32 getContrast();
00330 virtual uint32 getCurrentVideoDevice() = 0;
00332 virtual void setCurrentVideoDevice( uint32 aIndex ) = 0;
00334 virtual vector<VideoDevice>& getVideoDevices() = 0;
00336 VideoMode& getCurrentVideoMode();
00338 virtual EResult applyVideoMode( VideoMode& rMode ) = 0;
00340 virtual void setFullscreen( bool bFullscreen = true ) = 0;
00342 void toggleFullscreen();
00344 bool isFullscreen();
00346 virtual void setViewport( int32 aX, int32 aY, int32 aW, int32 aH ) = 0;
00348 virtual void getViewport( int32& aX, int32& aY, int32& aW, int32& aH ) = 0;
00350 virtual int32 getViewWidth() = 0;
00352 virtual int32 getViewHeight() = 0;
00354 virtual uint32 getBackBufferWidth() = 0;
00356 virtual uint32 getBackBufferHeight() = 0;
00358 virtual void fitViewportToWindow() = 0;
00360 virtual void setRenderWindow( RenderWindow* pWnd ) = 0;
00362 virtual RenderWindow* getRenderWindow() = 0;
00365 virtual void setRenderTarget( Texture* pTarget, uint32 aCubeFace = 0 ) = 0;
00367 virtual Texture* getRenderTarget() = 0;
00369 virtual void setCamera( Camera* pCamera );
00371 virtual Camera* getCamera();
00373 virtual void setClearColor( float32 aR, float32 aG, float32 aB, float32 aA ) = 0;
00375 virtual void clear( uint32 aFlags = eClearBufferFlag_Depth | eClearBufferFlag_Color ) = 0;
00377 virtual void flip() = 0;
00379 virtual void beginRender() = 0;
00381 virtual void renderGeometryBuffer( GeometryBuffer* pGeomBuffer, bool bInstanced = false,
00382 uint32 aVertexOffset = 0,
00383 uint32 aIndexOffset = 0,
00384 uint32 aVertexCount = 0,
00385 uint32 aIndexCount = 0 ) = 0;
00387 virtual void endRender() = 0;
00390 virtual void updateColorBuffer();
00392 virtual void copyBackBufferToTexture( Texture* pTex ) = 0;
00394 virtual void copyRenderTargetToTexture( Texture* pTex ) = 0;
00396 virtual uint32 registerSystemTexture( Texture* pTex, const char* pName );
00398 virtual void unregisterSystemTexture( uint32 aId );
00400 virtual Texture* getSystemTexture( uint32 aId );
00402 virtual Texture* getSystemTexture( const char* pName );
00404 map<uint32,SystemTextureInfo>& getSystemTextures();
00406 vector<RenderLayer>& getRenderLayers();
00408 RenderLayer* getRenderLayerByName( const char* pName );
00410 virtual void saveScreenshot( const char* pImgFile, int32 aNewWidth = -1, int32 aNewHeight = -1 ) = 0;
00412 virtual void setGamma( float32 aGamma );
00414 virtual void setBrightness( float32 aBrightness );
00416 virtual void setContrast( float32 aContrast );
00418 virtual void setScissorBox( int32 aX, int32 aY, int32 aWidth, int32 aHeight ) = 0;
00420 virtual float32 getCapability( EGraphicsCapability aCap ) = 0;
00422 virtual void setForceWireframe( bool bForce );
00424 virtual bool isWireframeForced();
00426 virtual void setWireframeColor( Color& rColor );
00428 virtual Color getWireframeColor();
00430 virtual void setGlobalOverrideShader( Shader* pShader, ShaderPreset* pShaderPreset = NULL );
00432 virtual void getGlobalOverrideShader( Shader** pShader, ShaderPreset** pShaderPreset = NULL );
00434 virtual void setMatrixMode( EMatrixMode aMode ) = 0;
00436 virtual void loadMatrix( Matrix& rMtx ) = 0;
00438 virtual void loadIdentity() = 0;
00440 virtual void multiplyMatrix( Matrix& rMtx ) = 0;
00442 virtual void perspective( float32 aFov, float32 aAspect, float32 aNear, float32 aFar ) = 0;
00444 virtual void ortho( float32 aA, float32 aB, float32 aC, float32 aD, float32 aZ1, float32 aZ2 ) = 0;
00446 virtual void translate( float32 aX, float32 aY, float32 aZ ) = 0;
00448 virtual void rotate( float32 aAngle, float32 aX, float32 aY, float32 aZ ) = 0;
00450 virtual void scale( float32 aX, float32 aY, float32 aZ ) = 0;
00452 virtual void translate( Vector3D& rTranslate );
00454 virtual void rotate( Quaternion& rQuat );
00456 virtual void scale( Vector3D& rScale );
00458 virtual void getMatrix( Matrix& rMtx ) = 0;
00460 virtual void pushMatrix() = 0;
00462 virtual void popMatrix() = 0;
00464 virtual void project( Vector3D* pIn, uint32 aNum, Vector3D* pOut ) = 0;
00466 virtual void unProject( Vector3D* pIn, uint32 aNum, Vector3D* pOut ) = 0;
00468 virtual Vector3D unProjectScreenPosition( int32 aX, int32 aY ) = 0;
00470 virtual Ray computePickRay( int32 aMouseX, int32 aMouseY ) = 0;
00472 virtual void disableTextureStage( int32 aStage = -1 );
00474 virtual void setBlending( bool bActive, EBlendOp aSrc = eBlendOp_Zero, EBlendOp aDst = eBlendOp_One ) = 0;
00476 virtual void setDepthTest( bool bValue ) = 0;
00478 virtual void setAlphaTest( bool bValue ) = 0;
00480 virtual void setStencilTest( bool bValue ) = 0;
00482 virtual void setScissorTest( bool bValue ) = 0;
00484 virtual void setDepthWrite( bool bValue ) = 0;
00486 virtual void setColorWrite( bool bValue ) = 0;
00488 virtual void setAntialiasLevel( EAntialiasLevel aValue ) = 0;
00490 virtual void setCullMode( ECullMode aValue ) = 0;
00492 virtual void setFillMode( EFillMode aValue ) = 0;
00494 virtual void setDepthFunc( ECmpFunc aValue ) = 0;
00496 virtual void setAlphaFuncAndRef( ECmpFunc aValue, uint32 aRef ) = 0;
00498 virtual void setDepthBias( float32 aValue ) = 0;
00500 virtual void setStencilParameters( EStencilOp aFail, EStencilOp aZFail,
00501 EStencilOp aPass, ECmpFunc aFunc,
00502 uint32 aRef, uint32 aMask ) = 0;
00504 virtual void setPointSprites( bool bEnable, bool bScaleEnable = true ) = 0;
00506 virtual void setPointSpriteSize( float32 aSize = 1, float32 aMinSize = 1, float32 aMaxSize = 1 ) = 0;
00508 virtual void setPointSpriteScale( float32 aX = 1, float32 aY = 0, float32 aZ = 0 ) = 0;
00510 virtual void setTextureAddressType( uint32 aStage, Texture::EAddressType aType ) = 0;
00512 virtual void setTextureFilterType( uint32 aStage, Texture::EFilterType aType ) = 0;
00514 virtual bool isBlendingEnabled() = 0;
00516 virtual void getBlending( bool& rActive, EBlendOp& rSrc, EBlendOp& rDst ) = 0;
00518 virtual bool getDepthTest() = 0;
00520 virtual bool getAlphaTest() = 0;
00522 virtual bool getStencilTest() = 0;
00524 virtual bool getScissorTest() = 0;
00526 virtual bool getDepthWrite() = 0;
00528 virtual bool getColorWrite() = 0;
00530 virtual EAntialiasLevel getAntialiasLevel() = 0;
00532 virtual ECullMode getCullMode() = 0;
00534 virtual EFillMode getFillMode() = 0;
00536 virtual ECmpFunc getDepthFunc() = 0;
00538 virtual void getAlphaFuncAndRef( ECmpFunc& rValue, float32& rRef ) = 0;
00540 virtual float32 getDepthBias() = 0;
00542 virtual void getStencilParameters( EStencilOp& rFail, EStencilOp& rZFail,
00543 EStencilOp& rPass, ECmpFunc& rFunc,
00544 uint32& rRef, uint32& rMask ) = 0;
00546 virtual Texture::EAddressType getTextureAddressType( uint32 aStage = 0 ) = 0;
00548 virtual Texture::EFilterType getTextureFilterType( uint32 aStage = 0 ) = 0;
00549
00550
00551
00552
00553
00555 virtual void setupCanvas( float32 aX = 0, float32 aY = 0, float32 aWidth = 1, float32 aHeight = 1 );
00557 virtual void setupCanvasForUi();
00559 virtual void setTextureFiltering( bool bValue );
00561 void setBlendMode( EBlendingMode aMode );
00563 virtual void beginPrimitives( EGeometryPrimitive aPrimType );
00565 virtual void endPrimitives();
00567 virtual void vertex( Vector3D* pValue );
00569 virtual void vertex( float32 aX, float32 aY, float32 aZ = 0 );
00571 virtual void normal( Vector3D* pValue );
00573 virtual void normal( float32 aX, float32 aY, float32 aZ = 0 );
00575 virtual void color( Color* pValue );
00577 virtual void color( float32 aR, float32 aG, float32 aB, float32 aA = 1 );
00579 virtual void uv( uint32 aStage, UvCoord* pValue );
00581 virtual void uv( uint32 aStage, float32 aU, float32 aV );
00583 virtual void quad2d( float32 aX, float32 aY, float32 aWidth, float32 aHeight, float32 aDepth = 0 );
00585 virtual void quad2dUV( float32 aX, float32 aY, float32 aWidth, float32 aHeight, float32 aU = 0, float32 aV = 0, float32 aUW = 1, float32 aVH = 1, float32 aDepth = 0 );
00587 virtual void quad2dWire( float32 aX, float32 aY, float32 aWidth, float32 aHeight, float32 aDepth = 0 );
00589 virtual void quad2dWireShadow( float32 aX, float32 aY, float32 aWidth, float32 aHeight, Color& rLight, Color& rShadow, float32 aDepth = 0 );
00591 virtual void drawTexturedQuad( Texture* pTex, float32 aX, float32 aY, float32 aW, float32 aH, Color& rColor = Color( 1, 1, 1, 1 ), float32 aU = 0, float32 aV = 0, float32 aUW = 1, float32 aVH = 1, float32 aDepth = 0 );
00593 virtual void drawBox( float32 aWidth, float32 aHeight, float32 aDepth );
00595 virtual void drawSolidBox( float32 aWidth, float32 aHeight, float32 aDepth );
00597 virtual void drawEllipsoid( float32 aRadius1, float32 aRadius2, float32 aRadius3, uint32 aDx = 10, uint32 aDy = 10 );
00599 virtual void drawSolidEllipsoid( float32 aRadius1, float32 aRadius2, float32 aRadius3, uint32 aDx = 10, uint32 aDy = 10 );
00601 virtual void drawSimplisticEllipsoid( float32 aRadius1, float32 aRadius2, float32 aRadius3, uint32 aDensity = 10 );
00603 virtual void drawCylinder( float32 aRadius1, float32 aRadius2, float32 aHeight, uint32 aDx = 10, uint32 aDy = 10 );
00605 virtual void drawSolidCylinder( float32 aRadius1, float32 aRadius2, float32 aHeight, uint32 aDx = 10, uint32 aDy = 10 );
00607 virtual void drawSimplisticCylinder( float32 aRadius1, float32 aRadius2, float32 aHeight, uint32 aPoints = 10 );
00609 virtual void draw3dCross( float32 aSize );
00612 virtual void drawBillboard( Vector3D& rPosition, Texture* pTex, float32 aWidth = 1, float32 aHeight = 1, Color& rColor = Color( 1, 1, 1, 1 ), Vector3D* pCorners = NULL );
00614 virtual bool isBillboardPicked( Vector3D* pCorners, Ray& rRay, float32& rTime, Vector3D& rPoint );
00618 virtual bool drawObjectIcon( Vector3D& rPosition, Texture* pTex, Color& rColor = Color( 1, 1, 1, 1 ), Vector3D* pPos2D = NULL );
00620 virtual void drawGrid( float32 aGridSize, uint32 aMajorLineCount, uint32 aMinorLineCount, Color& rMajorLineColor, Color& rMinorLineColor, Color& rMiddleLineColor );
00622 void drawAxisGizmo( AxisGizmo& rGizmo );
00624 void drawViewAxis( AxisGizmo& rGizmo );
00626 void setFont( UiFontData* pFont );
00628 void setTextCharSpacing( float32 aSpacing );
00630 void setTextLineSpacing( float32 aSpacing );
00632 void setTextColor( Color& rColor );
00634 void setTextTabSize( float32 aSize );
00636 void setTextTabCharWidth( float32 aWidth );
00638 void setTextWordWrap( bool bValue );
00640 UiFontData* getFont();
00642 float32 getTextCharSpacing();
00644 float32 getTextLineSpacing();
00646 Color getTextColor( Color& rColor );
00648 float32 getTextTabSize();
00650 float32 getTextTabCharWidth();
00652 bool isTextWordWrapEnabled();
00653
00655 void write( TextRenderCache* pCache, const char* pText, ... );
00657 void write( TextRenderCache* pCache, const wchar_t* pText, ... );
00659 void writeAt( TextRenderCache* pCache, float32 aX, float32 aY, const char* pText, ... );
00661 void writeAt( TextRenderCache* pCache, float32 aX, float32 aY, const wchar_t* pText, ... );
00664 void writeInBox( TextRenderCache* pCache, UiRectangle* rRect, uint32 aFlags, const char* pText, ... );
00667 void writeInBox( TextRenderCache* pCache, UiRectangle* rRect, uint32 aFlags, const wchar_t* pText, ... );
00669 void computeTextSizes( const char* pText, UiRectangle* rRect );
00671 void computeTextSizes( const wchar_t* pText, UiRectangle* rRect );
00672
00673 protected:
00674
00676 void rawWriteAt( TextRenderCache* pCache, float32 aX, float32 aY, const char* pText );
00678 void rawWriteAt( TextRenderCache* pCache, float32 aX, float32 aY, const wchar_t* pText );
00680 void drawViewAxisWithColors( AxisGizmo& rGizmo, Color& rcX, Color& rcY, bool specialZ = false );
00682 virtual void beginUsingBasicShader();
00684 virtual void endUsingBasicShader();
00685
00686 virtual void onResourceUnload( Resource* pRes );
00687
00689 vector<VideoDevice> m_videoDevices;
00691 uint32 m_currentVideoDevice;
00693 uint32 m_maxStages,
00695 m_clearFlags;
00697 Camera* m_pCamera;
00699 VideoMode m_currentVideoMode;
00701 bool m_bForceWireframe;
00703 Color m_wireframeColor;
00705 RenderWindow* m_pRenderWindow;
00707 Texture* m_pRenderTarget;
00709 EAntialiasLevel m_antialiasLevel;
00711 float32 m_gamma,
00713 m_brightness,
00715 m_contrast;
00717 Shader* m_pGlobalOverrideShader;
00719 ShaderPreset* m_pGlobalOverrideShaderPreset;
00721 UiFontData* m_pFont;
00723 bool m_bTextWordWrap;
00725 float32 m_textCharSpacing,
00727 m_textLineSpacing;
00729 Color m_textColor;
00731 float32 m_currentTextX,
00733 m_currentTextY,
00735 m_textTabSize,
00737 m_textTabCharWidth;
00739 TextRenderCache m_defaultTextCache;
00741 map<uint32,SystemTextureInfo> m_systemTextures;
00743 Shader* m_pBasicShader;
00745 bool m_bBasicShaderIsActive;
00747 vector<RenderLayer> m_renderLayers;
00748 };
00749 };
00750 };
00751
00752 #endif