DirectX9 에서 DC를 얻어 2D를 간단히 그리는 방법


1 DirectX9 에서 DC를 얻어 2D를 간단히 그리는 방법 #

다이렉트X에서 2D를 찍는 방법은 여러가지가 있다. 일단 프리미트브 2개를 사용해 평면을 만들어 텍스쳐를 입히는 방법과 ID3DXSprite 를 사용하는 방법 그리고 DC를 얻어서 그리는 방법이다. 음 이 외에도 방법이 있을지도 모르지만 내가 모르니 패스

일단 DC를 얻기위해서 초기화를 해주어야 하는 부분이 있는데
D3DPRESENT_PARAMETERS d3dpp;
를 이용해 D3DDevice 를 초기화 시킬때
d3dpp.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER
를 설정해준다.

위의 플래그는 어플리케이션이 직접 백 버퍼를 설정할 필요가 있을때 설정한다고 하는데 음 결과적으로는 퍼포먼스가 별로 안좋다고 한다. 하지만 간단한 테스트등을 할대는 퍼포먼스 보다는 편의성!

 HDC hdc;
LPDIRECT3DSURFACE9 BackBuffer;
g_pd3dDevice->GetBackBuffer( 0, 0, D3DBACKBUFFER_TYPE_MONO, &BackBuffer )
BackBuffer->GetDC(&hdc);

<< 여기서 DC를 이용한 출력문을 사용하면 된다. >>

BackBuffer->ReleaseDC(hdc);


http://lagoons.net/docdata/GetdcSample.jpg

개인적인 생각으로 아직 시도해보지는 않았지만 여기에도 winapi.co.kr 에서 볼수있는 dc에 적용하는 더블버퍼링을 사용한다면 점더 효율적이지 않을까 한다.









방금 구현해본 바로는 졸라 꼬리다 이건 사용할 방법이 못된다. 더블버퍼링이 꼬리다는 소리가 아니고 DC를 얻어 쓰는 방법이 꼬리다. 음 웬지 깜밖 거리기도 하고 카메라를 돌리면 어째서 인지 출력이 안될때도 있다. by yoway 2004/6/4

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다