#ifndef RENDERER_D3D9_H #define RENDERER_D3D9_H #if defined(WIN32)||defined(__WIN32__)||defined(_MSC_VER) #include "common.h" #include "renderer.h" #include "vertexbuffer_d3d9.h" #include "rendertarget_d3d9.h" #include "font_d3d9.h" #include "texture_d3d9.h" #include "geometryinterface_d3d9.h" #if defined(__WIN32__)||defined(WIN32)||defined(_MSC_VER) class RendererD3D9: public Renderer { protected: CoreD3D9 *d3dcore; GeometryInterfaceD3D9 *geom_d3di; GeometryType d3dgeomtype; D3DCAPS9 caps; D3DMATERIAL9 d3dmaterial; LPDIRECT3DSURFACE9 defaultdepthstencilsurface; virtual void UpdateD3DState(); public: RendererD3D9(Core *core); virtual ~RendererD3D9(); virtual Core *GetCore() {return core;} virtual void TargetViewport(const Viewport &vp); virtual Viewport TargetViewport(); virtual void PushProjection(); virtual void LoadProjection(const Matrix4x4 &mat); virtual void LoadProjection(const Projection &proj); virtual void MultProjection(Matrix4x4 &mat); virtual void PopProjection(); virtual Matrix4x4 GetProjection(); virtual Frustum GetProjectionFrustum(); virtual unsigned int GetProjectionStackDepth(); virtual void PushModelView(); virtual void LoadModelView(const Matrix4x4 &mat); virtual void MultModelView(const Matrix4x4 &mat); virtual void PopModelView(); virtual Matrix4x4 GetModelView(); virtual unsigned int GetModelViewStackDepth(); virtual bool BeginScene(bool clearcolor,bool cleardepth,Vector4 color); virtual bool EndScene(bool flip); virtual void SetCullMode(CullMode mode); virtual void State(int state,bool on); virtual void Blend(BlendMode mode,float mask=0.5f); virtual void BlendMask(float mask); virtual void Material(const RenderMaterial &material); virtual bool EnableLight(int slot,Light *light); virtual bool DisableLight(int slot); virtual VertexBuffer *CreateVertexBuffer(int attribs); virtual bool RenderVertexBuffer(VertexBuffer *buf,GeometryType geomtype); virtual bool BeginGeometry(int attribs,int numtextures,GeometryType geomtype); virtual void GeometryVertex(const Vector3 &vert); virtual void GeometryNormal(const Vector3 &norm); virtual void GeometryColor(const Vector4 &color); virtual void GeometryTexCoord(const Vector2 &texcoord,int idx); virtual bool EndGeometry(); virtual RenderTarget *CreateRenderTargetColorTexture(SamplerState samp,int po2lev,bool floatformat=false); virtual RenderTarget *CreateRenderTargetDepthTexture(SamplerState samp,int po2lev) {return NULL;} virtual bool BindRenderTarget(RenderTarget *target); virtual Texture *CreateTexture(Pixelmap *image,SamplerState samp,unsigned int flags); virtual FontBase *LoadFont(const char *file,int pt); virtual FontBase *LoadFont(const char *file) {return NULL;} virtual ShaderProgram *LoadShader(const char *dir,const char *name,bool hasfrag) {return NULL;} virtual bool RenderText(FontBase *font,int x,int y,const char *text); }; #endif #endif #endif