//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2007-2008)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: input_layout_d3d10.hpp
//      Краткое описание: input layout under the DirectX 10 platform
//

#ifdef GD_D3D10

#ifndef DSE_RS_MESH_INPUT_LAYOUT_D3D10_HPP
#define DSE_RS_MESH_INPUT_LAYOUT_D3D10_HPP

#include <Darkstar/common.hpp>
#include <Darkstar/Graphic System/Direct3D/graphicDriver.hpp>
#include <Darkstar/Resource System/rs_common.hpp>

namespace rs
{
	class InputLayout
	{
	private:
		std::vector<INPUT_ELEMENT> elements;
		ID3D10InputLayout* decl;

		std::vector<D3D10_INPUT_ELEMENT_DESC> _getD3DElements();
	public:
		InputLayout();
		~InputLayout();

		InputLayout& addElement(const std::string& usage, const unsigned int usage_index, 
			const unsigned int stream, const unsigned int offset, const DSEFORMAT& type);

		bool create(const void* compiled_shader_code, const unsigned int code_size);
		void set();
	};
};

#endif

#endif