반응형

아래 내용에 덧붙이자면


동일한 정점구조를 동시에 멀티로 세팅하고 싶을때 사용하거나


그냥 일반적으로 사용하기도 한다


멀티로 사용할때는 


LPDIRECT3DVERTEXBUFFER9 g_pVertexBuffer0 = NULL;

LPDIRECT3DVERTEXBUFFER9 g_pVertexBuffer1 = NULL;


처럼 멀티로 돌릴 개수만큼 정점버퍼를 생성해줘야한다






http://blog.naver.com/red_n_hot/60004005539


LPDIRECT3DVERTEXDECLARATION9       m_pVertexDeclaration;

 

//ㄴ  버텍스 정의하는 변수!?  를 만들어 주고

 

D3DVERTEXELEMENT9 dwDecl3[] = 
{
    {0, 0,  D3DDECLTYPE_FLOAT3,   D3DDECLMETHOD_DEFAULT,    D3DDECLUSAGE_POSITION, 0},
  D3DDECL_END()
};

 

//ㄴ 정점선언 이랄까나.. 

 

첫번째인자 스트림 몇번째인지 

두번째 옵셋~!? 시작(0)으로부터  @@??  아니아니... 어디서부터 사용할껀지.. ex)12바이트 까지 사용됬삼

세번째 타입  얼마나 사용할껀지 ex) D3DDECLTYPE_FLOAT3

네번째 메써드  디퍼트!? 디포트!?  몰라 이건

다섯번째 어떻게 사용할찌..  ex)  D3DDECLUSAGE_POSITION   포지션에대한

여섯번째 ex)텍스트 인덱스에 사용

 

typedef struct D3DVERTEXELEMENT9 {
    WORD Stream;
    WORD Offset;
    BYTE Type;
    BYTE Method;
    BYTE Usage;
    BYTE UsageIndex;
} D3DVERTEXELEMENT9, *LPD3DVERTEXELEMENT9;

//-----------------------------

//---------------------------------

struct CUSTOMVERTEX
{
 FLOAT x, y, z; // 공간상의 위치값
};

 

//ㄴ 사용하던데로 만들어 놓는다.

 

 pd3dDevice->CreateVertexDeclaration(dwDecl3, &m_pVertexDeclaration);

 pd3dDevice->SetVertexDeclaration(m_pVertexDeclaration);

 

//ㄴ 다이렉트엑스 sdk 레퍼런스에 요롷게 사용하랜다.

 pd3dDevice->CreateVertexBuffer( 
       8*sizeof(CUSTOMVERTEX),  // 버퍼 
       D3DUSAGE_WRITEONLY,   // 만들어진 버퍼의 성격 (읽기전용)   
       NULL,   // 버퍼 포맷(구조)
       D3DPOOL_DEFAULT,   // 메모리를 어느 영역에 할당할 것인가?
       &m_pTriVB, NULL );

 

//ㄴ 여기서 겁나 해멧삼..   기존 FVF 포멧을 요구하는데..  NULL  제로 값을 넣어주면 포멧 무시하겠단다.

 

 

CUSTOMVERTEX v[] =

 {

                { -1,  1,  1 },            /// v0

                {  1,  1,  1 },            /// v1

                {  1,  1, -1 },            /// v2

                { -1,  1, -1 },            /// v3

 


                { -1, -1,  1 },            /// v4

                {  1, -1,  1 },            /// v5

                {  1, -1, -1 },            /// v6

                { -1, -1, -1 },            /// v7

  };

//ㄴ 요래요래 값을 넣어주고

 

VOID* pVertices;

 m_pTriVB->Lock( 0, sizeof(v), (void**)&pVertices, 0 );
 memcpy( pVertices, v, sizeof(v) );

 m_pTriVB->Unlock();

 

//ㄴ 하던데로 하면됨

 

 

 

//-------------------------------그리는곳-----------------------------------

 

  pd3dDevice->SetStreamSource(0, m_pTriVB, 0, sizeof(CUSTOMVERTEX));

 

  pd3dDevice->SetIndices( m_pTriLB );

 

//ㄴ FVF 로 했던데로 하면된다.

//pd3dDevice->SetFVF( CUSTOMVERTEX::FVF ); 이런거 안해줘도됨






위 포스트ㅏ에 덧붙이자만..


_pD3dDevice->SetVertexDeclaration( _pDecl ); 은 써야함

반응형

+ Recent posts