#ifndef __VERTEX_BUFFER_OBJECT__
#define __VERTEX_BUFFER_OBJECT__
#include <stdlib.h>
#include "GL/glew.h"
#include "GL/glut.h"

// class to create and draw vertex buffer objects
class VertexBufferObject
{
public:
	// triangulationType (zB. GL_TRIANGLES) 
	VertexBufferObject(	GLenum triangulationType,
						const void* vertices, __int64 sizeVertices,
						const void* normals = NULL, __int64 sizeNormals = 0, 
						const void* texCoords = NULL, __int64 sizeTexCoords = 0,
						const void* colors = NULL, __int64 sizeColors = 0);

	virtual ~VertexBufferObject();

	void drawVBO();

protected:

	GLuint handler;

	__int64 sizeVertices;

	bool hasNormalsFlag;
	__int64 sizeNormals;

	bool hasTexCoordsFlag;
	__int64 sizeTexCoords;

	bool hasColorsFlag;
	__int64 sizeColors;

	GLenum triangulationType;
};

#endif __VERTEX_BUFFER_OBJECT__