Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

GXDeviceWrapper.h

Go to the documentation of this file.
00001 #ifndef __GXDEVICEWRAPPER_H
00002 #define __GXDEVICEWRAPPER_H
00003 
00004 #include "GXStandardDefines.h"
00005 #include "GXTextureManager.h"
00006 #include "GXSizeableArray.h"
00007 #include "GXMutex.h"
00008 
00009 D3DRENDERSTATETYPE
00010 
00011 struct SGXRenderStateCache
00012 {
00013         DWORD rgdwRenderStates[175];
00014         DWORD dwVertexShader;
00015         DWORD dwPixelShader;
00016 
00017         int iBackBuffer;//-1 for default
00018         int iDepthStencil;//-1 for default
00019 
00020         int rciTextures[8];
00021 
00022         int iVertexBufferIndex;
00023 
00024         int iIndexBufferIndex;
00025 };
00026 
00027 
00028 
00029 class CGXDeviceWrapper
00030 {
00031 public:
00032         CGXDeviceWrapper();
00033         virtual ~CGXDeviceWrapper();
00034 
00035         virtual bool CreateDevice(HWND hWnd, UINT uMultiSampleCount);
00036 
00037         virtual void GetBackBufferFormat(D3DFORMAT* pOut);
00038         virtual void GetDepthStencilFormat(D3DFORMAT* pOut);
00039 
00040         virtual bool Clear();
00041         virtual bool Present();
00042 
00043         virtual void SetBackgroundColor(DWORD dwColor);
00044         virtual DWORD GetBackgroundColor();
00045 
00046 
00047         virtual bool SetStreamSource(UINT uStream, int iIndex);
00048         virtual bool SetIndexBuffer(int iIndex);
00049 
00050         virtual bool DrawIndexedPrimitive(D3DPRIMITIVETYPE Type,
00051                                                                           UINT MinIndex,
00052                                                                           UINT NumVertices,
00053                                                                           UINT StartIndex,
00054                                                                           UINT PrimitiveCount);
00055         
00056         virtual bool SetRenderState(D3DRENDERSTATETYPE State,
00057                                                                 DWORD Value);
00058 
00059         virtual void EnablePolygonCounting(bool bVal);
00060         virtual void EnableRenderStateCaching(bool bVal);
00061 
00062 
00063         virtual bool SetPixelShader(UINT uIndex);
00064         virtual bool SetVertexShader(UINT uIndex);
00065 
00066         virtual bool SetVertexShaderConstant(DWORD Register, 
00067                                                                                 void* pConstantData, 
00068                                                                                 DWORD  ConstantCount);
00069 
00070 
00071 
00072         virtual bool CreatePixelShader(char* szShader, 
00073                                                                         UINT* pHandleOut);
00074 
00075         virtual bool CreateVertexShader(char* szShader, 
00076                                                                         UINT* pHandle);
00077 
00078         virtual bool SetRenderTarget(int iBackBuffer, 
00079                                                                 int iDepthStencil);//-1 for defaults
00080 
00081         virtual bool LoadGXModelFromStream(CGXModel* pOut, 
00082                                                                 IStream* pStream);
00083 
00084         virtual bool LoadGXModelFromData(CGXModel* pOut,
00085                                                                 GXVertex* pVerts,
00086                                                                 UINT* pIndices,
00087                                                                 DWORD dwVertCount,
00088                                                                 DWORD dwIndexCount,
00089                                                                 char* szTextureName,
00090                                                                 char* szBumpName);
00091         
00092         virtual bool CreateTextureFromFile(char* szTextureName, int* pOut);
00093         virtual bool CreateEmptyTexture(UINT uSideSize, bool bRenderTarget,
00094                                                                         int* pOut);
00095 
00096 
00097         virtual bool LockPipeline(int uMiliSec);//-1 for infinity
00098         virtual void UnlockPipeline();
00099 
00100         virtual bool CreateVertexBuffer(UINT uVertexCount,
00101                                                                         bool bDynamic,
00102                                                                         bool bWriteOnly,
00103                                                                         int* pOut);
00104         
00105         virtual bool CreateIndexBuffer(UINT uIndexCount,
00106                                                                         bool bDynamic,
00107                                                                         bool bWriteOnly,
00108                                                                         int* pOut);
00109 
00110         
00111         virtual bool SetTextureStageState(DWORD Stage,
00112                                                                         D3DTEXTURESTAGESTATETYPE Type,
00113                                                                         DWORD Value);
00114 
00115 
00116 protected:
00117         virtual bool CheckCaps(D3DCAPS8* pCaps);
00118         virtual bool CheckFormat(D3DFORMAT* pOut);
00119         virtual bool GetAnyFormat(D3DFORMAT* pOut);
00120 
00121         virtual void Cleanup();
00122 
00123 protected:
00124         bool                            m_bInSceneAlready;
00125         bool                            m_bCountPolygons;
00126         bool                            m_bCacheRenderStates;
00127 
00128         CGXMutex                        m_PipelineMutex;
00129 
00130         DWORD                           m_dwBackgroundColor;
00131 
00132         IDirect3D8*                     m_pD3D;
00133         IDirect3DDevice8*       m_pDevice;
00134 
00135         IDirect3DSurface8*  m_pBackBuffer;
00136         IDirect3DSurface8*  m_pDepthStencilBuffer;
00137 
00138         CGXTextureManager       m_TextureManager;
00139         CGXSizeableArray<IDirect3DVertexBuffer8*>       m_VertexBuffers;
00140         CGXSizeableArray<IDirect3DIndexBuffer8*>        m_IndexVertexBuffers;
00141         CGXSizeableArray<IDirect3DTexture8*>            m_TextureMaps;
00142         CGXSizeableArray<DWORD>                                         m_VertexShaders;
00143         CGXSizeableArray<DWORD>                                         m_PixelShaders;
00144 
00145 
00146         SGXRenderStateCache                                                     m_RenderStateCache;
00147 };
00148 
00149 
00150 
00151 
00152 
00153 #endif

Generated on Thu May 23 17:51:00 2002 by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001