C#에서 MDX(Managed DirectX) 를 사용하기 위해 아래의 경로에서 SDK를 다운 받아야 함.
- DirectX August 2007 SDK : http://www.microsoft.com/downloads/details.aspx?FamilyID=529f03be-1339-48c4-bd5a-8506e5acf571&DisplayLang=en
- 자료 출처 (네이버 지식인) : http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10115&eid=RHo60ptnSGFd/Rc2phAxV095bM7LuRO1&qb=TWljcm9zb2Z0LkRpcmVjdFguRGlyZWN0U291bmQ=&enc=utf8&pid=fmyU7woi5TossaJS4o0sss--185837&sid=ShyMx4Z0HEoAAEdgyv8
C# 에서 DirectX 이 의미하는 것은?
C#, Visual Basic.NET, C++ managed Extensions, JScript .NET 과 같은 .NET 기반의 언어를 통해서 Managed DirectX 를 이용하여 멋진 그래픽 기반의 프로그램을 만들 수 있습니다.
즉, .NET 프레임워크를 기반으로 하는 DirectX 라고 보시면 됩니다. 그래서 용어를 Managed DirectX 라고 합니다. 원래 .NET 프레임워크를 바탕으로 작성된 코드를 관리되는 (managed) 코드라고 하듯, DirectX 도 그렇게 불립니다.
현재는 Managed DirectX 코드 예제는 DirectX August 2007 SDK 버전까지만 지원됩니다. 그 이후로 나오는 DirectX November 2007 SDK 이나 DirectX March 2008 SDK에서는 더 이상 Managed DirectX 코드 예제나 문서를 찾아볼 수 없다는 것입니다.
저의 짧은 생각으로는, 마이크로소프트가 XNA Framework 를 적극 지원하려고 MDX (Managed DirectX) 를 소홀히 하는 것은 아닌가 하는 생각도 들구요.
아쉬운 대로, 최신(?) 버전의 DirectX SDK 인 DirectX August 2007 SDK 를 설치한다고 가정하겠습니다.
C# 에서 Managed DirectX 를 사용하는 것은?
C# 은 .NET 프레임워크를 지원하는 언어이므로, 모든 작업은 간단하게 진행됩니다.
기존의 unmanaged (.NET 프레임워크에서 관리하지 않고 플랫폼(Win32 등) 에서 제공하는 API 등으로 만들어진 것을 managed 와 대조하여 부릅니다) 언어인 VC++ 프로젝트로 DirectX 라이브러리를 설정하고 링크하는 것에 비해 매우 간단해 졌다고 볼 수 있습니다.
[그림 1]을 보면 usingMDX 라는 이름의 프로젝트를 Windows 응용 프로그램 형식으로 생성했습니다. 여기서 사용한 개발툴은 Microsoft Visual Studio 2005입니다.

화면 왼쪽에 배치되어 있는 솔루션 탐색기를 살펴보면 참조가 있습니다.

참조에 마우스 오른쪽 버튼을 눌러 나오는 메뉴의 참조 추가를 선택하면 아래와 같은 창이 뜹니다.

여기에 .NET 탭의 Managed DirectX 참조 라이브러리를 추가시켜주면, 프로젝트에서 간단하게 MDX 를 사용할 수 있게 됩니다.
기존의 VC++ 에 비하면 매우 간단해졌다고 볼 수 있다.
기본적으로 아래와 같이 3개의 라이브러리를 추가하면 되겠습니다.

확인 버튼을 누르고 다시 솔루션 탐색기의 참조를 살펴보면 아래와 같이 변경되었음을 알 수 있습니다.

추가된 라이브러리의 구성요소는 해당 개체를 더블클릭하여 개체 라이브러리에서 살펴볼 수 있습니다.
이제 소스 코드에 이 라이브러리의 네임스페이스를 적어두면 편리하게 사용할 수 있습니다.
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;Managed DirectX 의 네임스페이스는 무엇을 나타내나요?
[표 1]을 보시면 각 네임스페이스의 개요를 나타냈습니다.
자세한 사항은 DirectX SDK 문서를 참조하시면 되겠습니다.
| [표 1] Managed DirectX 의 네임스페이스 개요 | |
| Microsoft.DirectX | 부모 네임스페이스로서, 모든 공통된 코드를 포함한다. |
| Microsoft.DirectX.Direct3D | Direct3D 그래픽 API 와 D3DX 도우미 라이브러리 |
| Microsoft.DirectX.DirectDraw | DirectDraw 그래픽 API |
| Microsoft.DirectX.DirectPlay | DirectPlay 네트워킹 API => DirectX SDK March 2008 보면 이제 지원안한다고 함 |
| Microsoft.DirectX.DirectSound | DirectSound 오디오 API. |
| Microsoft.DirectX.DirectInput | DirectInput 사용자 입력 API. |
| Microsoft.DirectX.AudioVideoPlayback | 간단한 오디오와 비디오 플레이백 API |
| Microsoft.DirectX.Diagnostics | 간단한 진단용 API |
이제 코딩은 어떻게 하나요?
VC++ 로 코딩을 해 본적이 있다면, 유사하게 할 수 있답니다.
자세한 사항은 DirectX SDK 문서를 참조하시면 되겠습니다.



