/*
	ZDrawParams.hpp
	Author: James Russell <jcrussell@762studios.com>
	Created: 7/17/2012

	Purpose: 

	TODO

	License:

	TODO

*/


#pragma once

#ifndef _ZDRAWPARAMS_HPP
#define _ZDRAWPARAMS_HPP

#include <ZRenderer/ZRendererBuild.hpp>

//Draw Parameters Types
enum ZDrawParamsType
{
	ZDPT_SHADER,				//Shader Parameter Binding Structure
	ZDPT_VERTEX,				//Vertex Parameter Binding Structure
	ZDPT_INDEX,				//Index Parameter Binding Structure
	ZDPT_SIZE
};

class ZDrawParams
{
public:
	//Virtual Destructor
	virtual ~ZDrawParams() { }

	/*
	virtual public ZDrawParams::MarkResourcesContended
	
	Marks all resources bound in this draw parameters structure to be 
	contended by the renderer.
	
	@return (void)
	@context (renderer)
	*/
	virtual void MarkResourcesContended() = 0;

	/*
	virtual public ZDrawParams::ReleaseResourceContention
	
	Releases resource contention from the renderer.
	
	@return (void)
	@context (renderer)
	*/
	virtual void ReleaseResourceContention() = 0;
};

#endif
 
