#ifndef _VERTEXBUFFER_D3D9_H #define _VERTEXBUFFER_D3D9_H #include "common.h" #include "vertexbuffer.h" #if defined(__WIN32__)||defined(WIN32)||defined(_MSC_VER) class VertexBufferD3D9: public VertexBuffer { private: int fvf; unsigned int numtextures,numverts,numindices; unsigned int norm_offset; unsigned int tex_offset; unsigned int color_offset; unsigned int vertsize; // depends on the elements of vertices here LPDIRECT3DDEVICE9 dev; LPDIRECT3DVERTEXBUFFER9 verts; LPDIRECT3DINDEXBUFFER9 indices; void CalculateSizeAndFVF(); public: VertexBufferD3D9(LPDIRECT3DDEVICE9 dev,int attribs=0); virtual ~VertexBufferD3D9(); virtual void NumIndices(unsigned int num); virtual unsigned int NumIndices() {return numindices;} virtual void NumVerts(unsigned int num); virtual unsigned int NumVerts() {return numverts;} virtual void NumTextures(unsigned int num); virtual unsigned int NumTextures() {return numtextures;} virtual void SetInterleaved(void *data); // all data (but indices) passed in interleaved format added for optimal D3D support virtual void Set(int type,int idx,void *data); virtual void Get(int type,int idx,void **data) {*data=NULL;} virtual unsigned int Size(int type) {return 0;} virtual bool IsSoftBuffer() {return false;} // soft buffer status and client side storage depend on vertex mode virtual bool Render(GeometryType geomtype); }; #endif #endif