SlideShare une entreprise Scribd logo
1  sur  19
C# 맛보기 2
C++에서 만든 DLL을 어떻게 C#에서 쓸 것인가
들어가기 전에
• 미리 알아야 할 것
• C++ DirectX 프로젝트 만들기
• C++ DLL 만들기
• 별로 안 어렵습니다!
C++ DLL 프로젝트 만들기
설정을 이렇게 맞춰줍니다
DLL 파일을 만들 것이고
추가 옵션에서 내보내기 기호를 골라줍니다
C++ DLL 프로젝트 만들기
DX SDK가 미리 설치되어야 합니다
경로를 추가해줍니다
C++ DLL 프로젝트 만들기
링커  추가 종속성
d3d9.lib
d3dx9d.lib
dxerr.lib
dxguid.lib
winmm.lib
얘네들을 추가해줍니다
DirectX Tutorial 중에서 아무 거나…
• 소스를 Copy & paste 해 줍니다
• 물론 직접 짜셔도 됩니다
헤더 파일을 바꿔야 합니다
기본 설정은 #ifdef로 되어있는데
일단 싹 지우신 다음
extern “C” 를 사용합니다
선언한 함수들은 아까 cpp파일에서
구현한 함수입니다
당연히 리턴 타입과 인자도
일치해야 합니다
그리고 DLL을 통해 공유하고 싶은
함수들만 선언해야 합니다
여기선 테스트를 위해 모든 함수를 집어넣었습니다
컴파일을 한 번 해 볼까요?
잘 됩니다
여기서 막히면 다음 과정이 불가능합니다 
C# 프로젝트 만들기
C++ 프로젝트가 있는 솔루션에다가
C# 프로젝트를 추가시켜줍니다!
C# 프로젝트 만들기
1
2
3
생성된 C# 프로젝트를 우클릭
 속성
 빌드
 출력
항목으로 가 봅니다.
C# 프로젝트 만들기
이렇게 고쳐줍니다
C++에서 나온 DLL 파일이 있는 곳에 C# 프로젝트의 실행 파일을 갖다 놓기 위해서입니다
같은 폴더에서 실행하는 것이 편합니다
DLL 가져와서 클래스로 만들기
C# 프로젝트 안에 클래스를 하나
추가시켜 줍니다
그리고
Using System.Runtine.InteropService;
를 추가해 주신 다음
DllImport로 dll에 들어있는 함수를
가져옵니다
CallingConvention을 바꾸지 않으면
PInvokeStackImbalance가 발생합니다
DLL 가져와서 클래스로 만들기
• 주의할 점
• Namespace를 잘 봐두세요
• 나중에 가져다 쓸 때 클래스를 못 찾을 수가 있습니다
• C#클래스의 함수는 DLL 에 들어있는 함수, 즉 C++ 파일에서 만든 함수
와 이름이 똑같아야 합니다
• 리턴 타입도 같아야 합니다.
• 함수를 가져올 때 public static extern 을 꼭 앞에 붙여야 합니다
• 예를 들어 void LoadMesh(); 함수를 쓰고 싶다면
• public static extern void LoadMesh();
• 라고 선언해줘야 합니다
C# Form 만들기
뭔가 허전합니다
PictureBox 하나 들어있는 form인데요
이번 예제에서는 단추도 별 필요 없습니다
물론 제대로 된 툴로 만들기 위해서는
보다 많은 이벤트를 처리할 수 있어야 합니다
C# Form 만들기
PictureBox의 이름을 View로 바꿔줍니다
안 바꿔도 실행에는 문제가 없지만 앞으로 추가될
Item들을 생각하면 미리 이름을 정리해 두는 것이
좋을 것 같네요
구현
이게 끝입니다
C#에서 생성한 클래스가 DirectX 이므로
DirectX.함수명() 형태가 됩니다
몇 군데만 살펴보면,
D3D 초기화를 위해 핸들을 넘겨주는데
This.View.handle.ToInt32()
형태로 넘겨줍니다.
구현
DirectX.cs
Main
핸들이 인트값이라는 점을 이용해
C++ 자료형이 아니라도 넘겨줄 수
있는 것입니다
아까 불러올 때 Int32를 인자로 받게
선언했습니다
구현
렌더링 할 때 함수를 async로 선언하고
아래쪽에 await Task.Delay(10);을 줬는데
이 둘은 한 쌍으로 비동기 프로그래밍을 위해
사용합니다
생각해보면 화면에 그려주는 작업은 일정한
주기로 계속 반복되어야 하니 비동기로 따로
빼주는 것이 맞습니다
결과
잘 뜹니다!

Contenu connexe

En vedette

GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터Mark Choi
 
Dll파일 호출
Dll파일 호출Dll파일 호출
Dll파일 호출abapier
 
Cocos2d x a to z (상)
Cocos2d x a to z (상)Cocos2d x a to z (상)
Cocos2d x a to z (상)SeungIl Choi
 
Ccx03.cocos builder
Ccx03.cocos builderCcx03.cocos builder
Ccx03.cocos builder우진 이
 
Dom 생성과정
Dom 생성과정Dom 생성과정
Dom 생성과정abapier
 
Silverlight vs flash
Silverlight vs flashSilverlight vs flash
Silverlight vs flash권 태혁
 
4.5부동소수점
4.5부동소수점4.5부동소수점
4.5부동소수점JaeHong Park
 
게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출hongsungbock
 
[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기Sun Park
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Thisisone Lee
 
GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체Mark Choi
 
Digital lighting and rendering
Digital lighting and renderingDigital lighting and rendering
Digital lighting and renderingJaeHong Park
 
[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉MinGeun Park
 
이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예zupet
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 JiUng Choi
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp진현 조
 
알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비SeungMin Yang
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정funmeate
 
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2진상 문
 

En vedette (20)

GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터
 
Dll파일 호출
Dll파일 호출Dll파일 호출
Dll파일 호출
 
Cocos2d x a to z (상)
Cocos2d x a to z (상)Cocos2d x a to z (상)
Cocos2d x a to z (상)
 
Ccx03.cocos builder
Ccx03.cocos builderCcx03.cocos builder
Ccx03.cocos builder
 
Dom 생성과정
Dom 생성과정Dom 생성과정
Dom 생성과정
 
Silverlight vs flash
Silverlight vs flashSilverlight vs flash
Silverlight vs flash
 
4.5부동소수점
4.5부동소수점4.5부동소수점
4.5부동소수점
 
게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출
 
[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기
 
투영 공식
투영 공식투영 공식
투영 공식
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2
 
GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체
 
Digital lighting and rendering
Digital lighting and renderingDigital lighting and rendering
Digital lighting and rendering
 
[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉
 
이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp
 
알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
 
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
 

Similaire à C# 뉴비를 위한 맛보기 2

C#으로 게임 엔진 만들기(2)
C#으로 게임 엔진 만들기(2)C#으로 게임 엔진 만들기(2)
C#으로 게임 엔진 만들기(2)지환 김
 
Windosw via c 스터디20장.pptx
Windosw via c 스터디20장.pptxWindosw via c 스터디20장.pptx
Windosw via c 스터디20장.pptxHolyTak
 
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013devCAT Studio, NEXON
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강uEngine Solutions
 
Windows reversing study_basic_6
Windows reversing study_basic_6Windows reversing study_basic_6
Windows reversing study_basic_6Jinkyoung Kim
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터Dong Chan Shin
 
게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)Kiyoung Moon
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Ryan Park
 
C#으로 게임 엔진 만들기(1)
C#으로 게임 엔진 만들기(1)C#으로 게임 엔진 만들기(1)
C#으로 게임 엔진 만들기(1)지환 김
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Dong Chan Shin
 
C++20 Key Features Summary
C++20 Key Features SummaryC++20 Key Features Summary
C++20 Key Features SummaryChris Ohk
 
오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기용호 최
 
Windows reversing study_basic_5
Windows reversing study_basic_5Windows reversing study_basic_5
Windows reversing study_basic_5Jinkyoung Kim
 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinDong Chan Shin
 
[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli종빈 오
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.Ryan Park
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++KyeongWon Koo
 
Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4연우 김
 
모바일 해커톤 사전교육 2일차
모바일 해커톤 사전교육 2일차모바일 해커톤 사전교육 2일차
모바일 해커톤 사전교육 2일차Han Sung Kim
 

Similaire à C# 뉴비를 위한 맛보기 2 (20)

C#으로 게임 엔진 만들기(2)
C#으로 게임 엔진 만들기(2)C#으로 게임 엔진 만들기(2)
C#으로 게임 엔진 만들기(2)
 
Windosw via c 스터디20장.pptx
Windosw via c 스터디20장.pptxWindosw via c 스터디20장.pptx
Windosw via c 스터디20장.pptx
 
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강
 
Windows reversing study_basic_6
Windows reversing study_basic_6Windows reversing study_basic_6
Windows reversing study_basic_6
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터
 
게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005
 
C#으로 게임 엔진 만들기(1)
C#으로 게임 엔진 만들기(1)C#으로 게임 엔진 만들기(1)
C#으로 게임 엔진 만들기(1)
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1
 
C++20 Key Features Summary
C++20 Key Features SummaryC++20 Key Features Summary
C++20 Key Features Summary
 
오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기
 
Windows reversing study_basic_5
Windows reversing study_basic_5Windows reversing study_basic_5
Windows reversing study_basic_5
 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshin
 
[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++
 
Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4
 
Changes in c++0x
Changes in c++0xChanges in c++0x
Changes in c++0x
 
모바일 해커톤 사전교육 2일차
모바일 해커톤 사전교육 2일차모바일 해커톤 사전교육 2일차
모바일 해커톤 사전교육 2일차
 

Plus de 진상 문

[C++ beginner] sizeof()
[C++ beginner] sizeof()[C++ beginner] sizeof()
[C++ beginner] sizeof()진상 문
 
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part1
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part1Project Anarchy(Vision Engine)으로 게임 툴 만들기! part1
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part1진상 문
 
Pervasive computing
Pervasive computingPervasive computing
Pervasive computing진상 문
 
무중력 상태에 필요한 기초 물리
무중력 상태에 필요한 기초 물리무중력 상태에 필요한 기초 물리
무중력 상태에 필요한 기초 물리진상 문
 
Easy gameserver
Easy gameserverEasy gameserver
Easy gameserver진상 문
 
Halo ce anniversary Postmortem
Halo ce anniversary PostmortemHalo ce anniversary Postmortem
Halo ce anniversary Postmortem진상 문
 

Plus de 진상 문 (6)

[C++ beginner] sizeof()
[C++ beginner] sizeof()[C++ beginner] sizeof()
[C++ beginner] sizeof()
 
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part1
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part1Project Anarchy(Vision Engine)으로 게임 툴 만들기! part1
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part1
 
Pervasive computing
Pervasive computingPervasive computing
Pervasive computing
 
무중력 상태에 필요한 기초 물리
무중력 상태에 필요한 기초 물리무중력 상태에 필요한 기초 물리
무중력 상태에 필요한 기초 물리
 
Easy gameserver
Easy gameserverEasy gameserver
Easy gameserver
 
Halo ce anniversary Postmortem
Halo ce anniversary PostmortemHalo ce anniversary Postmortem
Halo ce anniversary Postmortem
 

C# 뉴비를 위한 맛보기 2

  • 1. C# 맛보기 2 C++에서 만든 DLL을 어떻게 C#에서 쓸 것인가
  • 2. 들어가기 전에 • 미리 알아야 할 것 • C++ DirectX 프로젝트 만들기 • C++ DLL 만들기 • 별로 안 어렵습니다!
  • 3. C++ DLL 프로젝트 만들기 설정을 이렇게 맞춰줍니다 DLL 파일을 만들 것이고 추가 옵션에서 내보내기 기호를 골라줍니다
  • 4. C++ DLL 프로젝트 만들기 DX SDK가 미리 설치되어야 합니다 경로를 추가해줍니다
  • 5. C++ DLL 프로젝트 만들기 링커  추가 종속성 d3d9.lib d3dx9d.lib dxerr.lib dxguid.lib winmm.lib 얘네들을 추가해줍니다
  • 6. DirectX Tutorial 중에서 아무 거나… • 소스를 Copy & paste 해 줍니다 • 물론 직접 짜셔도 됩니다
  • 7. 헤더 파일을 바꿔야 합니다 기본 설정은 #ifdef로 되어있는데 일단 싹 지우신 다음 extern “C” 를 사용합니다 선언한 함수들은 아까 cpp파일에서 구현한 함수입니다 당연히 리턴 타입과 인자도 일치해야 합니다 그리고 DLL을 통해 공유하고 싶은 함수들만 선언해야 합니다 여기선 테스트를 위해 모든 함수를 집어넣었습니다
  • 8. 컴파일을 한 번 해 볼까요? 잘 됩니다 여기서 막히면 다음 과정이 불가능합니다 
  • 9. C# 프로젝트 만들기 C++ 프로젝트가 있는 솔루션에다가 C# 프로젝트를 추가시켜줍니다!
  • 10. C# 프로젝트 만들기 1 2 3 생성된 C# 프로젝트를 우클릭  속성  빌드  출력 항목으로 가 봅니다.
  • 11. C# 프로젝트 만들기 이렇게 고쳐줍니다 C++에서 나온 DLL 파일이 있는 곳에 C# 프로젝트의 실행 파일을 갖다 놓기 위해서입니다 같은 폴더에서 실행하는 것이 편합니다
  • 12. DLL 가져와서 클래스로 만들기 C# 프로젝트 안에 클래스를 하나 추가시켜 줍니다 그리고 Using System.Runtine.InteropService; 를 추가해 주신 다음 DllImport로 dll에 들어있는 함수를 가져옵니다 CallingConvention을 바꾸지 않으면 PInvokeStackImbalance가 발생합니다
  • 13. DLL 가져와서 클래스로 만들기 • 주의할 점 • Namespace를 잘 봐두세요 • 나중에 가져다 쓸 때 클래스를 못 찾을 수가 있습니다 • C#클래스의 함수는 DLL 에 들어있는 함수, 즉 C++ 파일에서 만든 함수 와 이름이 똑같아야 합니다 • 리턴 타입도 같아야 합니다. • 함수를 가져올 때 public static extern 을 꼭 앞에 붙여야 합니다 • 예를 들어 void LoadMesh(); 함수를 쓰고 싶다면 • public static extern void LoadMesh(); • 라고 선언해줘야 합니다
  • 14. C# Form 만들기 뭔가 허전합니다 PictureBox 하나 들어있는 form인데요 이번 예제에서는 단추도 별 필요 없습니다 물론 제대로 된 툴로 만들기 위해서는 보다 많은 이벤트를 처리할 수 있어야 합니다
  • 15. C# Form 만들기 PictureBox의 이름을 View로 바꿔줍니다 안 바꿔도 실행에는 문제가 없지만 앞으로 추가될 Item들을 생각하면 미리 이름을 정리해 두는 것이 좋을 것 같네요
  • 16. 구현 이게 끝입니다 C#에서 생성한 클래스가 DirectX 이므로 DirectX.함수명() 형태가 됩니다 몇 군데만 살펴보면, D3D 초기화를 위해 핸들을 넘겨주는데 This.View.handle.ToInt32() 형태로 넘겨줍니다.
  • 17. 구현 DirectX.cs Main 핸들이 인트값이라는 점을 이용해 C++ 자료형이 아니라도 넘겨줄 수 있는 것입니다 아까 불러올 때 Int32를 인자로 받게 선언했습니다
  • 18. 구현 렌더링 할 때 함수를 async로 선언하고 아래쪽에 await Task.Delay(10);을 줬는데 이 둘은 한 쌍으로 비동기 프로그래밍을 위해 사용합니다 생각해보면 화면에 그려주는 작업은 일정한 주기로 계속 반복되어야 하니 비동기로 따로 빼주는 것이 맞습니다