/*!	
	@file
	@brief	バーテックスシェーダーコンパイルクラス
*/

#ifndef CVertexShaderCompiler_h
#define CVertexShaderCompiler_h

#include"../../../../../Setup/CompileMode.h"
#include"../../../../../template/com_ptr.h"
#include"../../CVertexShaderBuffer.h"
#include"../../CVideoCardDriver.h"

#include"D3D9Include.h"
#include<boost/smart_ptr.hpp>

namespace Maid
{
	class IVertexShaderCompiler
	{
	public:
		virtual ~IVertexShaderCompiler(){};


		/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
		//! ドライバ側で用意されているピクセルシェーダーの作成
		/*!
			@param	Name	[i ]	デフォルト名

			@return	作成されたピクセルシェーダー
		 */
		virtual SPVERTEXSHADERBUFFER Compile( const SPD3DDEVICE& pDevice, const mstring& Name )=0;

		/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
		//! ゲーム側独自のピクセルシェーダーの作成
		/*!
			@param	Code	[i ]	コード
			@param	type	[i ]	コンパイル

			@return	作成されたピクセルシェーダー
		 */
		virtual SPVERTEXSHADERBUFFER Compile( const SPD3DDEVICE& pDevice, const MySTL::vector<unt08>& Code, IVideoCardDriver::SHADERCOMPILE type )=0;

	};

	typedef	boost::shared_ptr<IVertexShaderCompiler>	SPVERTEXSHAERCOMPILER;

}

#endif


