Game Programming/Rendering

DX 9 :: 전체화면

VallistA2016. 2. 19. 14:21

DX 관련 글


기본 윈도우 생성 : 클릭

윈도우 생성 : 클릭

리얼타임 메시지 루프 : 클릭

Direct3D 시작 : 클릭




게임은 창모드 뿐만이 아니라, 전체화면에서도 게임을 하는 유저들이 있다.

아니. 있다뿐만이 아니라 매우 많을 것이다. 창화면보다 전체화면은 게임의 집중도를 올려주고, 성능 향상등의 효과를 불러오기 때문이다.


그러한 전체화면을 만들기 위해서는 몇가지 메서드를 몇가지 추가를 해주어야 하는데, 그 것에 대해서 보도록 하자.



스크린 사이즈 설정


Direct3D를 사용할 때 화면 해상도 크기를 사용할 기회가 많을 것이다.

특히, 게임이 런타임으로 돌아가고 있을 때 번거로움이 있을 수 있으며 이러한 문제를 단번에 해결할 수 있는 방법을 제시한다.


먼저, 프로그램 상단에 두개의 전행 처리변수를 추가한다.

이 변수들은 스크린 쪽 화면 높이와 넓이를 의미한다.



윈도우의 높이와 넓이를 사용하는 변수를 만들었으므로 이러한 변수를 사용해야하지 않겠는가? 

분명 윈도우 크기를 설정하는 함수를 저번 글들에 소개를 한 적이 있다. 다시한번 보도록 하자.



윈도우를 만드는 CreateWindowEx 함수의 인자중에는 윈도우의 화면 크기들을 조정하는 변수들이 있다.

이러한 곳에 SCREEN_WIDTH와 HEIGHT를 넣어주면 된다.


단 이러한 곳에 게임에 적합한 해상도를 넣어주는게 중요한데, 최근에 모니터 화면은 규격화 되어 있고, 게임을 묘사하는데 적합하기 때문에 

해상도를 한번 보도록 하자.


 해상도 

 픽셀 

 와이드 화면 

 800 * 600

 480,000

 NO

 1024 * 768

 786,432 

 NO 

 1152 * 864

 995,328 

 NO 

 1280 * 1024

 1,310,720 

 NO 

 1600 * 1200

 1,920,000 

 NO 

 1440 * 900 

 1,296,000 

 YES 

 1680 * 1050

 1,764,000

 YES 

 1920 * 1080 

 2,073,600 

 YES 

 1920 * 1200

 2,304,000

 YES 


보통 PC 게임의 경우에는 이러한 해상도에서 작업을 하며, 

요즘은 2560 이상으로 가기도 한다. 하지만 아직은 1920 * 1080까지만 지원해도 괜찮다.



전체 화면 모드로 변경


위에서 언급했다시피 CreateWindowEX를 한군데를 바꿔주었는데, 더 바꿔줘야 할 곳이 있다.



위의 소스와 대조해서 바뀐 부분을 알 수 있을텐데, 이번에 바뀐 부분은


WS_EX_TOPMOST | WS_POPUP

0, 0,


이 두줄이 바뀌었다.

이 두줄이 의미하는 바는 매개 변수를 변경하므로써 x,y의 위치를 설정하고, 모든 테두리를 제거하라는 명령이다.


그리고 우리는 윈도우에서 색상을 변경하던 것을 DX 자체에서 색을바꿔주기 때문에 더이상 색상을 사용하지 않는다. 주석을 걸어주도록 하자.



이 다음 해줄일은 d3d 구조체에 새로운 화면 해상도에 대해서 변경을 해줘야 한다.



여기서 짚고 가야할 것들을 짚고 넘어가자.


d3dpp.BackBufferFormat


 이 멤버 변수는 Direct3D의 픽셀의 종류가 무엇인지를 디스플레이에 알려주는 변수이다. 이 변수는 6가지 타입을 사용할 수 있으며 

 그것중 2가지의 16비트 유형이 있으며, 일반적으로 이 16비트 유형은 사용되지 않는다. 

 나머지 4가지의 유형은 32비트 유형이며 우리는 보통 이것을 사용한다. 그중에 우리가 사용할 것은 D3DFMT_X8R8G8B8이다.


 다른 유형에 대해서 표를 보도록하자.


 값

 설명

 D3DFMT_A8R8G8B8

 32비트 픽셀 포멧이며 256 레벨의 (8비트) 적색, 녹색, 청색 그리고 알파 값을 사용한다.

 D3DFMT_X8R8G8B8

 위의 변수와 같지만 다른점은 알파값을 지원하지 않는다는 것이다.


BackBufferWidth, BackBufferHeight


 이 변수는 백버퍼의 높이와 넓이를 나타낸다.



 소스코드



출력시 전체화면으로 출력될 것이다.

'Game Programming > Rendering' 카테고리의 다른 글

Rendering :: anti-aliasing  (0) 2016.08.18
DX 9 :: 3차원의 대해서 알아보기  (0) 2016.02.24
DX 9 :: Direct3D 시작  (0) 2016.02.17
DX 9 :: 리얼타임 메시지 루프  (0) 2016.02.16
DX 9 :: 윈도우 생성  (1) 2016.02.16

댓글

VallistA

병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.
현재는 이 블로그를 운영하지 않습니다.
vallista.kr 로 와주시면 감사하겠습니다!

자고 싶습니다. ㅠㅠ

Github      :: 링크

궁금한점 문의 주시면 답변드리도록 하겠습니다

VISITED

Today :

Total :

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘

Lately Post

Lately Comment