52 lines
926 B
C++
52 lines
926 B
C++
#pragma once
|
|
#ifndef BUFFER
|
|
#define BUFFER
|
|
|
|
#include <vector>
|
|
#include <GL/glew.h>
|
|
|
|
#include "mesh.h"
|
|
|
|
struct meshDesc
|
|
{
|
|
meshDesc() : mesh(0), vertexOffset(0), vertexSize(0), texCoordOffset(0), texCoordSize(0), normalOffset(0), normalSize(0), vbo(0)
|
|
{
|
|
}
|
|
|
|
Xr_Mesh *mesh;
|
|
unsigned int vertexOffset;
|
|
unsigned int vertexSize;
|
|
unsigned int texCoordOffset;
|
|
unsigned int texCoordSize;
|
|
unsigned int normalOffset;
|
|
unsigned int normalSize;
|
|
GLuint vbo;
|
|
};
|
|
|
|
class Xr_BufferManager
|
|
{
|
|
public:
|
|
Xr_BufferManager();
|
|
~Xr_BufferManager();
|
|
|
|
static Xr_BufferManager* getInstance();
|
|
static bool instanced();
|
|
static void quitInstance();
|
|
|
|
bool load(Xr_Mesh*);
|
|
void unload(Xr_Mesh*);
|
|
void unloadAll();
|
|
|
|
void fetchVertex(Xr_Mesh*);
|
|
void fetchTexCoord(Xr_Mesh*);
|
|
void fetchNormal(Xr_Mesh*);
|
|
void fetchNull();
|
|
|
|
private:
|
|
|
|
static Xr_BufferManager* B_instance;
|
|
std::vector<meshDesc> B_meshList;
|
|
};
|
|
|
|
#endif
|