#pragma once

#include "DLLInterface.h"
#include "ShaderProgram.h"

class DXFUNCTIONS_API HLVertexShader : public ShaderProgram
{
	friend ShaderManager;

	XString m_Profile;
	LPDIRECT3DVERTEXSHADER9 m_Shader;
	LPD3DXCONSTANTTABLE		m_ConstantTable;

protected:
	HLVertexShader(ShaderManager* const manager, const XString& fn, const XString& profile);
	~HLVertexShader(void){ReleaseSH();}
	void ReleaseSH(void);

public:
	void Compile(bool debug = false);
	XString GetDisassembly(void);

	LPDIRECT3DVERTEXSHADER9 GetShader(void){return m_Shader;}
	LPD3DXCONSTANTTABLE	GetConstantTable(void){return m_ConstantTable;}
};