28 #ifndef HPL_VERTEXBUFFER_VBO_H 29 #define HPL_VERTEXBUFFER_VBO_H 31 #include "common/scummsys.h" 32 #include "hpl1/engine/graphics/VertexBuffer.h" 38 class cVertexBufferVBO :
public iVertexBuffer {
40 cVertexBufferVBO(iLowLevelGraphics *apLowLevelGraphics, tVertexFlag aFlags,
41 eVertexBufferDrawType aDrawType, eVertexBufferUsageType aUsageType,
42 int alReserveVtxSize,
int alReserveIdxSize);
45 void AddVertex(tVertexFlag aType,
const cVector3f &avVtx);
46 void AddColor(tVertexFlag aType,
const cColor &aColor);
47 void AddIndex(
unsigned int alIndex);
49 bool Compile(tVertexCompileFlag aFlags);
50 void UpdateData(tVertexFlag aTypes,
bool abIndices);
52 void CreateShadowDouble(
bool abUpdateData);
54 void Transform(
const cMatrixf &mtxTransform);
56 void Draw(eVertexBufferDrawType aDrawType = eVertexBufferDrawType_LastEnum);
57 void DrawIndices(
unsigned int *apIndices,
int alCount,
58 eVertexBufferDrawType aDrawType = eVertexBufferDrawType_LastEnum);
63 iVertexBuffer *CreateCopy(eVertexBufferUsageType aUsageType);
65 cBoundingVolume CreateBoundingVolume();
70 float *GetArray(tVertexFlag aType);
71 unsigned int *GetIndices();
73 void ResizeArray(tVertexFlag aType,
int alSize);
74 void ResizeIndices(
int alSize);
77 cVector3f GetVector3(tVertexFlag aType,
unsigned alIdx);
78 cVector3f GetVector4(tVertexFlag aType,
unsigned alIdx);
79 cColor GetColor(tVertexFlag aType,
unsigned alIdx);
80 unsigned int GetIndex(tVertexFlag aType,
unsigned alIdx);
83 int GetElementNum(tVertexFlag aFlag);
85 void SetVertexStates(tVertexFlag aFlags);
87 unsigned int mlElementHandle;
89 tFloatVec mvVertexArray[klNumOfVertexFlags];
91 unsigned int mvArrayHandle[klNumOfVertexFlags];
93 tUIntVec mvIndexArray;
95 bool mbHasShadowDouble;
103 #endif // HPL_RENDERER3D_VBO_H