//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2007-2008)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: render_target_d3d9.hpp
//      Краткое описание: Render Target object for direct3d 9
//

#ifdef GD_D3D9

#ifndef DSE_GS_RT_RENDER_TARGET_D3D9_HPP
#define DSE_GS_RT_RENDER_TARGET_D3D9_HPP

#include <Darkstar/common.hpp>
#include <Darkstar/Graphic System/Render Target/render_target_common.hpp>
#include <Darkstar/Resource System/Textures/rtTexture.hpp>

namespace gs
{
	class RenderTarget
	{
	private:
		unsigned int layers_number;

		std::vector<IDirect3DSurface9*> texture_data;
		IDirect3DSurface9* texture_data_without_aa;
		shared_ptr<rs::RTTexture> darkstar_texture;

		unsigned int width;
		unsigned int height;
		DRTAATYPE aa_type;
		bool need_texture;
		DRTFORMAT format;
	public:
		RenderTarget();
		~RenderTarget();

		bool create2D(const unsigned int width, const unsigned int height, const DRTFORMAT& format, 
			const DRTAATYPE& aa_type, bool need_texture);
		bool create2D(IDirect3DSurface9* rt_tex);

		bool createCube(const unsigned int width, const unsigned int height, const DRTFORMAT& format);

		unsigned int getWidth() const;
		unsigned int getHeight() const;
		const DRTAATYPE& getAAType() const;
		const DRTFORMAT& getFormat() const;
		bool getIsNeedTexture() const;

		unsigned int getLayersNumber() const;

		shared_ptr<rs::BaseTexture> getTexture() const;

		IDirect3DSurface9* getDataTexture(const unsigned int layer_num = 0) const;
		IDirect3DSurface9* getDataWithoutAATexture() const;
	};
};

#endif


#endif