/***************************************************************/
//
//
//		DirectX	[ending_background.cpp]
//
//										Author	kazuki tanaka
//										Date	2016 08/10
/*---------------------------------------------------------------
■Update : 2016/08/10

/*---------------------------------------------------------------
	インクルードファイル
---------------------------------------------------------------*/
#include "main.h"

/*---------------------------------------------------------------
	マクロ定義
---------------------------------------------------------------*/
/*---------------------------------------------------------------
	定数定義
---------------------------------------------------------------*/
#define TEXTURE_NAME ( "data\\TEXTURE\\ending_bg.jpg" )

#define NUM_VERTEX (4)							//頂点数

/*---------------------------------------------------------------
	サブルーチン
---------------------------------------------------------------*/
void InitTexEnding( void );						//リザルト用テクスチャの初期化
void UninitTexEnding( void );					//リザルト用テクスチャの終了処理
void UpdateTexEnding( void );					//リザルト用テクスチャの更新
void DrawTexEnding( void );						//リザルト用テクスチャの描画
HRESULT MakeVertexEnding( LPDIRECT3DDEVICE9 pDevice );
												//リザルト用テクスチャの頂点情報

/*---------------------------------------------------------------
	グローバル変数
---------------------------------------------------------------*/
LPDIRECT3DTEXTURE9 g_pTextureEnding = nullptr;	//テクスチャ-インターフェ-ス用
							
LPDIRECT3DVERTEXBUFFER9 g_pVtxBufferEnding = nullptr;
												//頂点バッファインターフェースへのポインタ

// 背景の初期化
void InitTexEnding( void )
{

	LPDIRECT3DDEVICE9 g_pPD3DDevice=nullptr;		//デバイス受け取り用関数

	// デバイスの受け取り
	g_pPD3DDevice = GetDevice( );

	// VERTEX_2Dの設定
	MakeVertexEnding(g_pPD3DDevice);

	// テクスチャの読み込み
	if(FAILED(D3DXCreateTextureFromFile( g_pPD3DDevice, TEXTURE_NAME, &g_pTextureEnding )))
	{
		MessageBox(NULL,"テクスチャのファイルの読み込みに失敗しました","失敗", MB_YESNO | MB_ICONWARNING | MB_DEFBUTTON2);
	}


}

// 背景の終了処理
void UninitTexEnding( void )
{

	// テクスチャインターフェースの開放
	SAFE_RELEASE(g_pTextureEnding)

	// 頂点バッファインターフェースの開放
	SAFE_RELEASE(g_pVtxBufferEnding)


}

// 背景の更新
void UpdateTexEnding( void ){

	
}

// 背景の描画
void DrawTexEnding( void )
{

	LPDIRECT3DDEVICE9 g_pPD3DDevice=nullptr;			//デバイス受け取り用関数


	// デバイスの受け取り処理
	g_pPD3DDevice=GetDevice( );

	// ストリーム
	g_pPD3DDevice->SetStreamSource(0,
	g_pVtxBufferEnding,									//どの頂点バッファ―と結ぶか...
	0,													//データのオフセット
	sizeof(VERTEX_2D));									//ストライド値(バイト)

	// 頂点フォーマットの設定
	g_pPD3DDevice->SetFVF(FVF_VERTEX_2D);

	
	// テクスチャの設定
	g_pPD3DDevice->SetTexture( 0, g_pTextureEnding );	//頂点にUVデータをセットする
	
	// ポリゴンの描画
	g_pPD3DDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );


}

// 頂点の作成
HRESULT MakeVertexEnding( LPDIRECT3DDEVICE9 pDevice )
{

	VERTEX_2D *pVtx;									//仮想アドレス

	if(FAILED(pDevice->CreateVertexBuffer(
			sizeof(VERTEX_2D) * NUM_VERTEX,				//確保するバッファサイズ(頂点数分確保) 単位:バイト
			D3DUSAGE_WRITEONLY,							//使用方法
			FVF_VERTEX_2D,								//使用する頂点フォーマット(特殊な処理をしない限り参照されないので0でよい)
			D3DPOOL_MANAGED,							//バッファの管理方法(バッファの中に書き込んだものの管理方法)
			&g_pVtxBufferEnding,						//格納するポインタ先
			NULL)))
	{

		MessageBox(NULL,"バッファへの書き込みに失敗しました!!","vertex buffer ERROR!!",MB_OK);
		return E_FAIL;
	}

	// バッファをロックし仮想アドレスを取得する
	g_pVtxBufferEnding -> Lock(0,0,(void**)&pVtx,0);			//GPUからのVRAMへの操作をロックする



	// 頂点座標の設定
	pVtx[0].pos = D3DXVECTOR3( 0,            0,             0.0f);
	pVtx[1].pos = D3DXVECTOR3( SCREEN_WIDTH, 0,             0.0f);
	pVtx[2].pos = D3DXVECTOR3( 0,            SCREEN_HEIGHT, 0.0f);
	pVtx[3].pos = D3DXVECTOR3( SCREEN_WIDTH, SCREEN_HEIGHT, 0.0f);


	pVtx[0].rhw = 1.0f;
	pVtx[1].rhw = 1.0f;
	pVtx[2].rhw = 1.0f;
	pVtx[3].rhw = 1.0f;

	pVtx[0].color = D3DCOLOR_RGBA(255,255,255,255);
	pVtx[1].color = D3DCOLOR_RGBA(255,255,255,255);
	pVtx[2].color = D3DCOLOR_RGBA(255,255,255,255);
	pVtx[3].color = D3DCOLOR_RGBA(255,255,255,255);

	pVtx[0].tex = D3DXVECTOR2( 0.0f, 0.0f );
	pVtx[1].tex = D3DXVECTOR2( 1.0f, 0.0f );
	pVtx[2].tex = D3DXVECTOR2( 0.0f, 1.0f );
	pVtx[3].tex = D3DXVECTOR2( 1.0f, 1.0f );

	// バッファのアンロック
	g_pVtxBufferEnding->Unlock();

	return S_OK;

}
