/*
	ZOpenGLVertexParams.hpp
	Author: Patrick Baggett <ptbaggett@762studios.com>
	Created: 12/13/2012

	Purpose: 

	OpenGL specific version of ZVertexParams that implements VAOs.

	License:

	TODO

*/

#pragma once

#ifndef _ZOPENGLVERTEXPARAMS_HPP
#define _ZOPENGLVERTEXPARAMS_HPP

#include <ZRenderer/ZVertexParams.hpp>
#include <ZRenderer/ZOpenGLShaderProgram.hpp>
#include <SST/SST_GLAPI.h>


class ZOpenGLRenderer;

class ZOpenGLVertexParams : public ZVertexParams
{
	public:
		ZOpenGLVertexParams(ZOpenGLRenderer* renderer) :
		Renderer(renderer), vaoHandle(0), arrayBufferBound(0), elementBufferBound(0)
		{
		}

		~ZOpenGLVertexParams();

		void UpdateDirty(ZOpenGLShaderProgram* prgm);
	
		ZOpenGLRenderer* Renderer;
		GLuint vaoHandle;				//Vertex Array Object (VAO) handle
		GLuint arrayBufferBound;		//VBO (GL_ARRAY_BUFFER) that was bound
		GLuint elementBufferBound;		//VBO (GL_ELEMENT_BUFFER) that was bound
};

#endif