/// @file RenderBuffer.h
#ifndef RENDERBUFFER_H
#define RENDERBUFFER_H

#include <d3d9.h>
#include <d3dx9.h>
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")

struct ModelVertex {
	float fX, fY, fZ;
	float fU, fV;
	enum { FVF_FLAG = D3DFVF_XYZ | D3DFVF_TEX1 };
};

/**
	@brief 렌더링을 위한 모델클래스

	모델이라는 개념은 렌더링을 위한 개념입니다.\n
	화면에 렌더링 될때 Model 단위로 렌더링됩니다.\n
	실질적인 버텍스버퍼와 텍스쳐의 정보를 가지는 객체입니다.
*/
class Model {
public:
	Model(){
		pVB = NULL;
		pIB = NULL;
		pTexture = NULL;
	}
	~Model(){
		if(pVB != NULL){pVB->Release(); pVB = NULL;}
		if(pIB != NULL){pIB->Release(); pIB = NULL;}
		if(pTexture != NULL){pTexture->Release(); pTexture=NULL;}
	}

	LPDIRECT3DVERTEXBUFFER9 pVB; ///< 버텍스 버퍼
	LPDIRECT3DINDEXBUFFER9  pIB; ///< 인덱스 버퍼
	LPDIRECT3DTEXTURE9      pTexture; ///< 텍스쳐

	int numVertices;
	int numPolygons;
};

//another FVF
struct EffectVertex {
	float    fX, fY, fZ;
	D3DCOLOR dColor;
	enum { FVF_FLAG = D3DFVF_XYZ | D3DFVF_DIFFUSE };
};
#endif