비주얼 베이직.
쉬운 언어입니다. VC++보다 배우기 쉽다는 데 장점이 있지요.
저는 VC와 VB를 같이 씁니다만, VB를 더 자주 씁니다.
하지만 느립니다. 느리다고 게임을 만들 수 없을까요?
아닙니다. DirectX와 API를 이용하면 VB로도 충분히 게임을 만들 수 있습니다.
그럼..시작해 볼까요?
(0) 준비
우선 VB에서 DirectDraw를 이용하기 위해서는 DirectX 7 Type Library를 참조하셔야 겠지요.
그리고 VB를 실행시키고, 새 프로젝트를 만듭니다.
그리고... 끝입니다.
제 강좌에서는 마우스를 쓰실 일이 거의 없으실 것입니다.
(1) DirectDraw 객체의 생성, 그리고 표면의 생성
1. DirectDraw 객체 생성하기
DirectDraw를 사용하기 전에 해야 할 일은 우선 DirectX 7 객체를 생성하셔야 합니다.
DirectX 7 객체는 다음과 같이 선언합니다.
그리고 이 DirectX7 객체를 이용해서 DirectDraw객체를 생성해 봅시다.
Dim objDD As DirectDraw
Set objDD = objDX.DirectDrawCreate("")
* DirectX7객체의 DirectDrawCreate함수는 DirectDraw7 객체를 만들고 리턴 해 줍니다.
2. DirectDraw 표면 만들기
DirectDraw 객체를 생성했으면 이제 DirectDraw의 표면을 생성해 봅시다.
DirectDraw의 표면은 다음과 같이 선언합니다.
그럼 이 ddSurface 변수에 객체를 만들어야 겠지요.
이 표면은 DirectDraw7의 CreateSurface함수를 이용해 만들 수 있습니다.
CreateSurface 함수는 다음과 같이 선언됩니다.
이 함수는 표면의 너비, 높이, 투명색 등을 정의한 DDSURFACEDESC2 구조체를 인자로 받아서 표면을 생성해 참조를 리턴해줍니다.
그럼 이 CreateSurface함수를 이용해 표면을 만들어 봅시다.
Dim ddsd As DDSURFACEDESC2
ddsd.ddsCaps.lCaps = DDSCAPS_PRIMARTSURFACE - ①
ddsd.lWidth = 640
ddsd.lHeight = 480
Set ddsurface = objDD.CreateSurface(ddsd)
ddsd의 값을 보면 너비 640, 높이 480으로 정의한 것을 볼 수 있습니다.
그러면 ①은 뭘까요?
바로 표면이 '메인 표면'인지, '보조 표면'인지 정의해줍니다.
즉 '보조 표면'에서는 더블 버퍼나 스프라이트 등을 정의하는 표면이 되겠고,
'메인 표면'은 화면(혹은 더블 버퍼에 출력된 화면)을 그리는 표면이 되겠지요.
위의 코드에서는 DDSCAPS_PRIMARYSURFACE옵션을 사용해 메인 표면을 정의한 것을 알 수 있는데,
보조 표면은 DDSCAPS_OFFSCREENPLAIN 옵션을 이용해 정의할 수 있습니다.
* 표면을 만드는 또 다른 사용법
만약에 표면에 스프라이트를 로딩하려고 한다면, CreateSurface함수를 이용하고, Blt함수 (이는 다음 강의에서 다룰 것입니다)를 이용해 직접 뿌려줘야 할 것입니다.
그러나 CreateSurfaceFromFile함수를 이용하면 편리하게 사용할 수 있습니다.
CreateSurfaceFromFile함수는 다음과 같이 선언됩니다.
file(파일의 경로)를 제외한 모든 것은 CreateSurface와 같이 사용하시면 됩니다.
이쯤에서 1강은 마쳐야 겠네요.
다음 강좌에선 DirectDraw 표면에 직접 블리팅 하는 법을 배우게 될 것입니다.
그럼 다음강에서 ~~