00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __IVIDEO_VBUFMGR_H__
00021 #define __IVIDEO_VBUFMGR_H__
00022
00023 #include "csutil/scf.h"
00024
00025 class csMatrix3;
00026 class csPlane3;
00027 class csVector3;
00028 class csVector2;
00029 class csColor;
00030 struct iPolygonTexture;
00031 struct iMaterialHandle;
00032
00033 SCF_VERSION (iVertexBuffer, 0, 1, 0);
00034
00042 struct iVertexBuffer : public iBase
00043 {
00045 virtual int GetPriority () const = 0;
00047 virtual bool IsLocked () const = 0;
00051 virtual csVector3* GetVertices () const = 0;
00055 virtual csVector2* GetTexels () const = 0;
00059 virtual csColor* GetColors () const = 0;
00063 virtual int GetVertexCount () const = 0;
00064 };
00065
00066 SCF_VERSION (iPolygonBuffer, 0, 0, 3);
00067
00079 struct iPolygonBuffer : public iBase
00080 {
00089 virtual void AddPolygon (int* verts, int num_verts,
00090 const csPlane3& poly_normal,
00091 int mat_index,
00092 const csMatrix3& m_obj2tex, const csVector3& v_obj2tex,
00093 iPolygonTexture* poly_texture) = 0;
00094
00099 virtual void SetVertexArray (csVector3* verts, int num_verts) = 0;
00100
00104 virtual void AddMaterial (iMaterialHandle* mat_handle) = 0;
00108 virtual int GetMaterialCount () const = 0;
00112 virtual iMaterialHandle* GetMaterial (int idx) const = 0;
00117 virtual void SetMaterial (int idx, iMaterialHandle* mat_handle) = 0;
00118
00120 virtual void Clear () = 0;
00121 };
00122
00123 SCF_VERSION (iVertexBufferManagerClient, 0, 0, 1);
00124
00131 struct iVertexBufferManagerClient : public iBase
00132 {
00137 virtual void ManagerClosing () = 0;
00138 };
00139
00140 SCF_VERSION (iVertexBufferManager, 0, 0, 2);
00141
00146 struct iVertexBufferManager : public iBase
00147 {
00148
00149
00158 virtual iVertexBuffer* CreateBuffer (int priority) = 0;
00159
00164 virtual void ChangePriority (iVertexBuffer* buf, int new_priority) = 0;
00165
00179 virtual bool LockBuffer (iVertexBuffer* buf,
00180 csVector3* verts,
00181 csVector2* texels,
00182 csColor* colors,
00183 int num_verts, int buf_number) = 0;
00184
00188 virtual void UnlockBuffer (iVertexBuffer* buf) = 0;
00189
00190
00191
00196 virtual iPolygonBuffer* CreatePolygonBuffer () = 0;
00197
00198
00199
00204 virtual void AddClient (iVertexBufferManagerClient *client) = 0;
00205 virtual void RemoveClient (iVertexBufferManagerClient *client) = 0;
00206 };
00207
00208 #endif // __IVIDEO_VBUFMGR_H__
00209