[c#] directX 연동 및 툴 만들기 - 1

Programming/DirectX|2017. 12. 15. 15:30
반응형

안녕하세요. 그 동안 시험이랑 회사일이 많아 포스팅이 뜸했습니다.

오늘 포스팅 할것은 C# Form에서 DirectX연동할건데요.

여러 기능도 추가하고 꾸준히 올리도록 노력하겠습니다.

 

 

 

 

1. 먼저 파일 - 새로만들기 - 프로젝트를 눌러줍니다.

 

 

 

 

 

 

2. Visual C# - Windows Form응용프로그램을 누르고 이름과 경로는 원하는 것으로 만들어줍니다.

 

 

 

 

 

 

3. 확인을 누르면 아래와 같이 Form1이라는 창이 나타납니다. 왼쪽 .cs들은 c++에서 .cpp와 .h와 같은 것이라고 보면 됩니다.

 

 

 

 

 

 

4. 먼저 DirectX를 쓰기 위해서 c++에서는 lib와 include를 해주었는데 c#에서는 왼쪽메뉴 중에 참조 - 참조추가를 해주어야됩니다.

 

 

 

 

 

 

5. 잉? .NET, .COM, 프로젝트 등등을 찾아봐도 DirectX가 안보이네요? DirectX는 직접 찾아가서 추가해줘야 되는데요.

   찾아보기를 눌러준 후 아래 경로에서 3개의 dll들을 추가해줍니다.

 

 

C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.dll

C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.Direct3D.dll

C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.Direct3DX.dll

 

 

 

 

 

6. 자 이제 빌드를 해봅시다~ 했는데 빌드가 안됨....

 

대체 왜 안되는거야!(야채 안 머겅!)

 

 

 

 

 

7. 버전이 안 맞아서 생기는 문제라고 하는데요~ 아래와 같이 하면 됩니다.

   프로젝트 마우스 오른쪽 버튼을 누르고 추가 - 새항목을 눌러줍니다. 

 

 

 

 

 

 




8. 응용 프로그램 구성 파일을 누르고 .config파일을 하나 만들어주는데요.

   이름은 App으로 했습니다.

 

 

 

 

 

 

9. 해당 config에 아래와 같이 적고 빌드해주면 됩니다. 

 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy ="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

 

 

 

 

 

10. 빌드가 되었으니 이제 폼 설정을 한건데요. 보통 Init()->Update()->Render() 이 순서로 계속 돌지요?

     넵 그렇습니다~ 초기화를 먼저 해주겠습니다.

     먼저 "폼을 클릭"해주시고 "마우스 오른쪽 버튼"을 누르고 "속성"에 들어갑니다.

 

<- 마우스 오른쪽 클릭     <-속성 선택

 

 

 

 

 

11. 속성에 들어가면 "AZ아래로 된 버튼"과 "해리포터번개 버튼"을 누르면 해당 폼에 대한

     이벤트 함수들이 쭉 정렬되는데요. Load 누르고 옆에 함수이름을 원하는데로 정하면 함수가 생깁니다.

     이 함수가 로드할 때 불리는 이벤트 함수입니다.

 

 

 

 

 

 

12. 해당 함수내에서 초기화를 시켜줍니다.

 

using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;

먼저 헤더쪽에 위 두개를 using해주고

 

 

디바이스 변수 선언.

 

 

main_load함수 내 디바이스 설정 및 생성

여기서 중요한것

device = new Device(0, DeviceType.Hardware, _renderWindows, CreateFlags.SoftwareVertexProcessing, pp);

에서 _renderWindows는 아래 11번부터 생성할 pannel입니다.

(저 같은 경우는 디바이스 클래스를 생성해서 pannel의 이름을 인자값으로 넘겨서 _renderWindows의 이름으로 받았습니다.)

 

this.MainPannel == _renderWindows

<- 같음

 

 

 

 

13. 준비가 됐으니 화면에 나타낼 패널이 필요한데요.

     도구상자 - panel을 누르고 폼 위에 원하는 곳에 배치합니다.

 

아래로 가면 panel이 있음 누르고 폼 위에 배치하면 됨.

 

 

 

 

 

14. 아까와 마찬가지로 이번에는 패널창을 누르고 - 마우스오른쪽 버튼 - 속성

 

 

 

 

 

 

15. 해당 컨트롤(panel) 누르고 오른쪽버튼 - 속성에 보면 Paint라는 부분이 보입니다. 이 부분에 c++에서 했던 begin() end()등을 넣어 그릴것입니다.

    

 

this.MainPannel == _renderWindows

 

 

 

 

 

16. 위에서 만든 함수 안에 아래와 같이 적어줍니다.

 

 

 

 

완성~

 

 

 

반응형

댓글()