반응형

//점의 색상에 알파값을 적용하기 위한state
   _pD3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
   _pD3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
   _pD3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );

   
   _pD3dDevice->SetRenderState(D3DRS_POINTSPRITEENABLE,TRUE);//점이 스프라이트로 그려지기 때문에 텍스쳐 가능을 켜야 한다
   _pD3dDevice->SetRenderState(D3DRS_POINTSCALEENABLE,TRUE);//크기 크게 가능 

   //이 세 개의 상수는 거리에 따라 포인트 스프라이트의 크기가 변하는 방법을 제어한다. 야기에서 말하는 거리란 카메라와 포인트 스프라이트 간의 거리이다. 
   //이것을 쓰려면 A=x,B=y,C=z 세개다 몇시해 줘야 한다
   _pD3dDevice->SetRenderState(D3DRS_POINTSCALE_A,0); 
   _pD3dDevice->SetRenderState(D3DRS_POINTSCALE_B,0); 
   _pD3dDevice->SetRenderState(D3DRS_POINTSCALE_C,1);


   float PointSize = 10.0f;
   _pD3dDevice->SetRenderState( D3DRS_POINTSIZE , *((DWORD*)&PointSize));
   _pD3dDevice->SetRenderState(D3DRS_POINTSIZE_MAX,*((DWORD*)&PointSize));   //max 가 0 이 아니어야 한다
   
   PointSize = 0.0f;
   _pD3dDevice->SetRenderState(D3DRS_POINTSIZE_MIN, *((DWORD*)&PointSize));

   _pD3dDevice->SetStreamSource( 0, NULL, 0, sizeof(VERTEX_POSCOLORPOINT) );
   _pD3dDevice->SetFVF( D3DFVF_POS_DIFFUSE );
   _pD3dDevice->SetIndices( NULL );

   _pointNodes[0]._color=D3DCOLOR_ARGB(33,0xff,0xff,0xff);
   _pD3dDevice->DrawPrimitiveUP( D3DPT_POINTLIST,_pointNodes.size(),(void*)&_pointNodes[0], sizeof(VERTEX_POSCOLORPOINT) );

   PointSize = 1.0f;
   _pD3dDevice->SetRenderState( D3DRS_POINTSIZE , *((DWORD*)&PointSize));
   _pD3dDevice->SetRenderState(D3DRS_POINTSCALEENABLE,FALSE);
   _pD3dDevice->SetRenderState(D3DRS_POINTSPRITEENABLE,FALSE); 
   _pD3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );
   _pD3dDevice->SetRenderState(D3DRS_POINTSCALE_C,0);

 

 

 

float 를 DWORD 로 변환할때 &,* 를 사용하는 이유

 

 

*(DWORD*)&PointSize 로 해야 제대로 소수부분또한 실수로 변환되어 DWORD 에서 실수에서의 값을 갖고 있게 된다

즉 *(DWORD*)&PointSize  에서 넘겨지는 DWORD 는 float 형을 DWORD의 비트열로 변환한 값을 필요로 한다는 것.

 

 

반응형

'그래픽스(Graphics) > DirectX9~12' 카테고리의 다른 글

Direct 에서 스피어함수  (0) 2012.11.02
투명처리와 알파 합성  (0) 2012.11.02
점그리기  (0) 2012.11.02
Directx D3DXCreateSphere 구현  (0) 2012.11.02
디바이스를 잃었을때의 복구 절차  (0) 2012.11.02

+ Recent posts