예전에 한번 파티클을 구현해 본적이 있는데 꽤나 단순하게 구현했습니다.
 그냥 아무렇게나 규칙에 맞춰 화면에 텍스쳐 잔뜩 뿌려주고, 좌표값 바꿔주고, 색상값 바꿔주고, 로테이션값 바꿔주면 됩니다. 하지만 그냥 이렇게만 하면 자연스러운 파티클은 나오지 않습니다.

위    - 자연스럽지 못한 파티클
아래 - 자연스러운 파티클

  위쪽 사진은 그냥 텍스쳐를 부려주는 것이고, 아래쪽의 사진은 텍스쳐를 뿌려주며 텍스쳐들의 색상값을 겹치게 하여 뿌리는 것입니다.

DXUTGetD3D9Device()->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
DXUTGetD3D9Device()->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
DXUTGetD3D9Device()->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);

 Draw하기 전에 위의 세줄을 입력하여 출력결과를 보십시요. 아마... 배경색과 합쳐져서 보이게 될 것입니다. 하지만 배경의 색이 검은색이라면 색이 전혀 합쳐지지 않고 그대로 출력되는 것을 볼 수 있습니다. 하지만 항상 배경색이 검은색으로 돼있을리는 없습니다.


void SetRenderTarget(LPDIRECT3DTEXTURE9 pTexture)
{
 LPDIRECT3DSURFACE9 pSurface;
 HRESULT hr = pTexture->GetSurfaceLevel(0, &pSurface);
 DXUTGetD3D9Device()->SetRenderTarget(0, pSurface);
 pSurface->Release();
}

void SetRenderTargetToOrigin(LPDIRECT3DSURFACE9 pTexture, bool EXIT)
{
 static LPDIRECT3DSURFACE9 _Origin = pTexture;
 DXUTGetD3D9Device()->SetRenderTarget(0,_Origin);
 if(EXIT)
  _Origin->Release();
}

 위의 두 함수는 사용자 정의 함수입니다. 첫번째 역할은 백버퍼를 자신이 원하는 LPDIRECT3DTEXTURE9형을 가진 변수로 바꾸는 것이고, 두번째 함수의 역할은 백버퍼를 원래의 백버퍼로 돌려놓는 것입니다. 
 SetRenderTarget을 이용해 어떤 텍스처에 그릴지 선택하고 그 텍스처에 r:0 g:0 b:0 a:0으로 색을 맞춰서 클리어해줍니다. 그리고 자신이 그리고 싶은 그림(Texture)을 그립니다(render). 그 다음SetRenderTargetToOrigin함수를 이용해 원래의 백버퍼로 렌더타겟을 잡습니다. 그리고 거기에 아까전에 Render를 마친 텍스쳐를 한번 더 뿌려줍니다.

하루에 6시간 3일 총 18시간을 투자해서 그래퍼&프로그래머 각각 한명씩해서 단 2명이 만든 리듬게임...
처음 만들기 시작했을 땐 불가능 할 줄 알았는데 막상 제작이 완료되니...


일단 메뉴.. 심플하다..ㅋㅋㅋ 저 오른쪽 아래 보이는 X버튼이 나가기버튼
게임 스타트 누르면 다음으로 넘어간다. 제작 기간은 30분??도 안걸렸을 것이다.

게임 세팅부분... 음악 선택하고 속도조절 난이도 조절 음악 미리듣고 랭킹도 보여주고
이 부분은 뭐 2시간만에 만들었던가... 나름 쉬웠다. 그냥 파일입출력이 제일 어려웠음.

그냥 미친듯이 막 코딩하다보니 나왔다... 그다지 어려운 부분은 없었는데 작업분량이 제일 많아서.... 제길..ㅜ;;



어려워 어려워 어려워..ㅜ;; 노트찍는게 제일 어려웠음.. 툴만들어서 음악들으면서 리듬에 맞춰 탁탁찍어줘야하니... 리듬게임 잘 못해서 노트찍는것도 꽤나 걸렸다. 노트 제작기간 2시간?

이거 이거 이거 만드는거 상당히 짜증났다..ㅡ;;
그냥 대충 코딩하다보니까 소스가 몇줄인지도 모르겠고... 어디에 뭐가있는지 짐작으로만 알뿐...
이거 끼워넣는데 버그가 좀 발생해서 그거 잡느라 짜증이 짜증이...

후후후.. 타이틀과 마찬가지로 엄청 쉬웠던 부분... 몇분걸렸더라??


우와 이부분 뭔가 상당히 많아서 효과넣어주고 하느라....
x누르면 랭킹등록창으로 넘어가고 또 누르면 타이틀로 간다.
제작기간은 몇시간이더라.. 좀 걸렸다...


이거 만드는게 제일 힘들었다...
랭킹등록... 제일 못하는 파일입출력..ㅜ;;
저거 만드는데만 몇시간 아직도 못잡은 버그가...


이렇게 게임 제작 완료 ㅋㅋㅋ