
/* _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

	FILE	: Renderer.h

+ ------ Explanation of file --------------------------------------------------------------------------

	描画総まとめ

+ _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */

#ifndef _Renderer_h_
#define _Renderer_h_

#include "Clipping.h"
class WindowManager;
class Scene;

#define NEAR_CLIP	0.1f
#define FAR_CLIP	1000.0f

enum TextureName
{
	eTexBlock,
	eTexCard,
	eTexGround,
	eTexCloud,
};

// レンダラークラス
class Renderer
{
	private:
		WindowManager*			m_pWinMan;		// ウィンドウ管理
		Scene*					m_pCamera;		// カメラ

    public:
		LPDIRECT3D9				m_pD3D;			// IDirect3D9インターフェイスへのポインタ
	    LPDIRECT3DDEVICE9		m_pD3DDevice;	// IDirect3DDevice9インターフェイスへのポインタ
	    D3DPRESENT_PARAMETERS	m_D3DPP;		// デバイスのプレゼンテーションパラメータ
		int						m_dispHeight;	// ディスプレイ高さ
		D3DXMATRIX				m_proj;			// 射影行列
		D3DXMATRIX				m_view;			// ビュー行列

		Clipping				m_clip;			// クリッピング機能、描画機能だしメンバ化

	    Renderer();
	    ~Renderer();

		void	init(bool isFullScr = false);
	    void	release(void);

		void	drawStart(void);	// 描画開始
		void	drawEnd(void);		// 描画終了
		void	set3D(void);		// 2D設定
		void	set2D(void);		// 3D設定

		VEC3	conv3Dto2D(VEC3 pos);	// ワールド座標toスクリーン座標

	private:
		WindowManager*	getWinMan(void){ return(m_pWinMan); }
		Scene*	getCamera(void){ return(m_pCamera); }
};

extern Renderer renderer;


#endif //_Renderer_h_


