강의 내용 : DirectX 개요 DirectX 9 을 이용한 시각화
목 차 DirectX 출현 배경 DirectX 현재 버전 DirectX 장점 DirectX 구성요소 DirectX SDK 다운로드 및 설치 DirectX SDK 폴더 구성 및 역할 샘플 코드 브라우저 비주얼 스튜디오 설정 도움말 활용
DirectX 출현 배경 윈도우 GDI 의 느린 출력으로 인하여 빠른 게임 화면을 제공하지 못함 개발자는 특정하드웨어 스펙에 신경을 쓸 필요 없이 DirectX 표준만 만족하도록 함 버전 6 의 시기까지는 OpenGL 과 같은 3D API 와 경쟁 적인 위치 버전 8 부터는 PC 의 윈도우 기반 환경에서는 독보적 인 위치
DirectX 현재 버전 DirectX 10 Windows Vista DirectX 11 Windows 7
DirectX 장점 발전된 멀티미디어 집합 다양한 함수들이 제공됨 하드웨어 독립적 개발 환경 여러 제조회사 제품에서 같은 기능 수행 하드웨어의 진보된 성능 활용 빠른 실행속도 하드웨어 추상화 레이어 하드웨어 기능을 COM Interface ( 클래스 ) 로 표현 함
DirectX 다운로드 및 설치 DirectX SDK 는 현재 Windows SDK 로 합쳐진 상태 DirectX SDK 만 다운로드 받을 경우 us/download/details.aspx?id=6812
DirectX SDK 폴더 구성
샘플 코드 브라우저 버전 9.0 부터는 샘플 테스트 를 위하여 샘플 브라우저 제 공 샘플 코드를 실행한 결과
비주얼 스튜디오 설정 디렉토리 설정 – 설치된 DirectX 의 헤더와 라이브러리 파일이 어디에 위치한지 Visual Studio 에 입력 – 프로그램에 한 번만 입력하면 계속 적용됨 (VS 2008 이전 ) 프로젝트 설정 – 현재 프로젝트 ( 프로그램 ) 이 어떤 라이브러리 파일을 사용할 지 파일 이름을 Visual Studio 에 입력 – 매 번 새로운 프로젝트 ( 프로그램 ) 을 생성할 때 마다 수행해야 함
참고 : Library 와 Header Note
참고 : Library 생성 정적 라이브러리 프로젝트를 만들려면 1. 메뉴 모음에서 파일, 새로 만들기, 프로젝트를 차례로 선택합니다. 2. 새 프로젝트 대화 상자 왼쪽 창의 설치됨, 템플릿, Visual C++ 를 차례로 확 장하고 Win32 를 선택합니다. 3. 가운데 창에서 Win32 콘솔 응용 프로그램을 선택합니다. 4. 프로젝트 이름 ( 예 : 이름 상자의 MathFuncsLib) 을 지정합니다. 솔루션 이름 상자에서 솔루션 이름 ( 예 : StaticLibrary) 을 지정합니다. 확인 단추를 선택합니 다. 5. Win32 응용 프로그램 마법사 대화 상자의 개요 페이지에서 다음 단추를 선 택합니다. 6. 응용 프로그램 설정 페이지의 응용 프로그램 종류 아래에서 정적 라이브러 리를 선택합니다. 7. 응용 프로그램 설정 페이지의 추가 옵션에서 미리 컴파일된 헤더 확인란을 선택 취소합니다. 8. 마침 단추를 선택하여 프로젝트를 만듭니다.
Visual studio 설정 (VC 6.0) 중요 설정 사항 SDK 의 기본 include 경로 SDK 의 기본 lib 경로 사용 메뉴 : Tools->Option->Directories
VS 디렉토리 설정 (2005 이후 ) ‘ 다음 파일의 디렉터리 표시 ’ 리스트를 누르고 포함파일 (include) 을 선택한 후 추가를 눌러 – Microsoft DirectX SDK\include 선택하여 추가 라이브러리 파일 (lib) 을 선택한 후 추가를 눌러 – Microsoft DirectX SDK\lib\x86 선택하여 추가
VS 프로젝트 설정 (2005 이후 ) 프로젝트 -> 속성 메뉴를 눌 러 설정 창을 띄운다. 링크 파일 설정 링커 -> 입력 -> 추가종 속성에 다음을 추가 d3d9.lib d3dx9.lib
도움말 활용 도움말 문서의 위치 (SDK 설치 폴더 )\Documentation \DirectX9\directx_sdk.chm -> DX9 의 소개와 일반 설명 (SDK 설치 폴더 )\Documentation \DirectX9\windows_graphics.chm -> 그래픽스 이론과 함수 설명 시작메뉴에도 있음
도움말 활용 실습 (windows_graphics.chm 파일을 실행하자 ) 색인 탭에서 다음의 용어를 검색해 보자 D3DXVECTOR3 CreateVertexBuffer 검색 탭에서 coordinate 로 검색해서 Coordinate Systems 란 무엇인지 찾아보자 내용 탭에서 다음 내용을 검색해보자 Direct3D 9 Graphics -> Programming Guide for Direct3D 9 -> Getting Started -> Deirec3D Architecture
예 제 1예 제 1 Console 프로젝트 #1 #include int main() { printf ("Hello World"): return 0; } Console 프로젝트 #2 #include int main() { MessageBox (NULL, L"Hello World", L"Hello", MB_OK); return 0; }
참고 - Unicode L"Hello" – "Hello" 의 각 문자는 1byte – 현대 프로그램에서 unicode 를 사용하는 경우 각 문자가 2byte 로 표현되는 표준이 존재함 – 각 문자를 2byte 로 해석하라는 의미의 접두어 L 을 사용 – 띄어쓰면 (L "Hello") 오류 ! 경우에 따라 _T("Hello") 와 같이 사용하는 경우도 있음
예 제 2예 제 2 Windows 프로젝트 #1 #include int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { MessageBox (NULL, L"Hello World", L"Hello", MB_OK); return 0; }
실 습 1실 습 1 윈도우 프로그래밍 (win32) 강의 홈페이지 ( 의 Winmain.txt 파일을 참조하여 교재 2 장과 같은 프로그 램을 작성 의 Winmain.txt 키보드 입력이나 마우스 버튼이 눌리면 창을 띄움
switch(msg) { case WM_KEYDOWN: switch(wParam){ case VK_ESCAPE: …} VK_SPACE (20) SPACEBAR VK_PRIOR (21) PAGE UP key VK_NEXT (22) PAGE DOWN key VK_END (23) END key VK_HOME (24) HOME key VK_LEFT (25) LEFT ARROW key VK_UP (26) UP ARROW key VK_RIGHT (27) RIGHT ARROW key VK_DOWN (28) DOWN ARROW key 참고
실 습 2실 습 2 교재 p.43 연습문제 4 번 : 다음 입력에 반응하도록 핸들러 함수를 수정해 보자 문자 ‘A’ 숫자 ‘5’ 컨트롤키 화살표키 페이지 업 / 다운 키
요약 윈도우 시스템의 느린 그래픽스 성능을 개선하기 위 해 DirectX 탄생 오랜 기간의 많은 발전을 통해, 현실적 표준의 위치 프로그램 환경 설정 DirectX SDK 를 다운받아 설치 Visual Studio 에 파일이 존재하는 경로 입력 (lib, h) 프로그래밍 (#include ) 컴파일시 링크 (d3d9.lib, d3dx9.lib) 옵션을 설정 기본적인 윈도우 프로그래밍 키보드, 마우스 입력의 처리
도전 문제 윈도우즈 그림판처럼 마우스 드래그를 수행하면 선이 그 려지도록 구현해 보자. WM_MOUSEMOVE ::MoveToEX, ::LineToEx 함수 Static / global variable