SlideShare une entreprise Scribd logo
1  sur  10
이민웅
참고 ) ShaderX6 8.2

3D ENGINE TOOLS WITH
C++/CLR
3D Engine Tools
 엔진은 C++로 툴은 C#으로 개발하고 싶을때

사용
 엔진/툴 독립적으로 유지 관리
 툴 개발시 GUI부분의 시간 단축
 약간의 노가다 작업 필요

 서버와 클라이언트 같은 작업 필요
CLR
 CLR(Common Language Runtime) 공통 언어

런타임
 성능 향상

 CLR의 JIT 컴파일러를 통해 만들어진 코드는

unmanaged code에 비해 성능이 우수

 개체 수명을 관리하는 가비지 수집
 CLR의 장점이라기 보다는 .NET Framework 차원

에서 지원하는 장점
C#
 .Net Framework 사용
 Java 와 비슷함

 툴 개발이 쉽다
 GUI 개발이 편리함
 Windows Form
 WPF
 Xaml 방식, DirectX 랜더링, Shader도 사용가능

 C++과 연동하기 위해 CLR를 사용
C++/CLR

C++

CLR

Wrapper

C#
C++과 CLR 코딩 방식
 포인터의 사용
 C++ : test * temp = new test()

 CLR : test^ temp = gcnew temp()

 주소값사용은 & -> %
 NULL 체크 NULL -> nullptr

 클래스
 C++ : class Test
 CLR : public ref class Test
String 변환
 C#은 기본적으로 Unicode만 지원
 Marshal 라이브러리를 사용하여 간단히 C++

용으로 변환

 닷넷 프레임워크 3.0부터 지원
 3.0이전 버전에는 문제가 많았음
msclr::interop::marshal_context ctx;
const char* ch = ctx.marshal_as<const char*> (str);

 C# 외부 DLL 링크도 가능
public sealed class DevilAPI
{
private const string DEVIL_LIBRARY = "Devil.dll";
[DllImport(DEVIL_LIBRARY, CallingConvention = CallingConvention.Winapi), SuppressUnmanagedCodeSecurity]
public static extern void ilInit();
}
Wrapper(CLR)
 C++의 데이터를 C#에서 사용하기 위해서는

C++에 사용하는 데이터 구조를 C#쪽에 새로
만듬
 저의 경우는 CLR 부분에서는 C++ <-> C#쪽의 데

이터의 변환 부분만 해줌
 툴 기능 코드들은 CLR과 C#쪽에서 모두 처리
Engine
AData

Wrapper(CLR)
SetAData
UpdateAData

Tool
ADataInfo
Wrapper

※ 이런식의 구조도 될 수 가 있음

참고 ) 툴과 오버 엔지니어링 그리고 벽돌 http://gamedevforever.com/23
감사합니다.

Contenu connexe

Tendances

[170403 2주차]C언어 A반
[170403 2주차]C언어 A반[170403 2주차]C언어 A반
[170403 2주차]C언어 A반arundine
 
KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅흥배 최
 
Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Eunbee Song
 
OpenCV 에서 OpenCL 살짝 써보기
OpenCV 에서 OpenCL 살짝 써보기OpenCV 에서 OpenCL 살짝 써보기
OpenCV 에서 OpenCL 살짝 써보기Seunghwa Song
 
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계Sungkyun Kim
 

Tendances (7)

Llvm
LlvmLlvm
Llvm
 
[170403 2주차]C언어 A반
[170403 2주차]C언어 A반[170403 2주차]C언어 A반
[170403 2주차]C언어 A반
 
llvm 소개
llvm 소개llvm 소개
llvm 소개
 
KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅
 
Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)
 
OpenCV 에서 OpenCL 살짝 써보기
OpenCV 에서 OpenCL 살짝 써보기OpenCV 에서 OpenCL 살짝 써보기
OpenCV 에서 OpenCL 살짝 써보기
 
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
 

En vedette

2012南瀛綠都心迎春花卉展
2012南瀛綠都心迎春花卉展2012南瀛綠都心迎春花卉展
2012南瀛綠都心迎春花卉展gongwujugongwuju
 
100年道路工程品質廉政研究簡報11.30
100年道路工程品質廉政研究簡報11.30100年道路工程品質廉政研究簡報11.30
100年道路工程品質廉政研究簡報11.30gongwujugongwuju
 
1000622 科務報告(局務會議)-養護工程二科
1000622 科務報告(局務會議)-養護工程二科1000622 科務報告(局務會議)-養護工程二科
1000622 科務報告(局務會議)-養護工程二科gongwujugongwuju
 
0802局務會議報告--使管
0802局務會議報告--使管0802局務會議報告--使管
0802局務會議報告--使管gongwujugongwuju
 
Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...
Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...
Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...Lenka Križanová
 
工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2
工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2
工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2gongwujugongwuju
 
第40局局務會議紀錄
第40局局務會議紀錄第40局局務會議紀錄
第40局局務會議紀錄gongwujugongwuju
 
新建二科1010524局務會議業務報告(精簡版) (1)
新建二科1010524局務會議業務報告(精簡版) (1)新建二科1010524局務會議業務報告(精簡版) (1)
新建二科1010524局務會議業務報告(精簡版) (1)gongwujugongwuju
 
第21局局務會議紀錄
第21局局務會議紀錄第21局局務會議紀錄
第21局局務會議紀錄gongwujugongwuju
 
第40局局務會議紀錄
第40局局務會議紀錄第40局局務會議紀錄
第40局局務會議紀錄gongwujugongwuju
 
Internet decency legislation
Internet decency legislationInternet decency legislation
Internet decency legislationTgarmon34
 
局務會議業務報告 養護工程二科101.2.1
局務會議業務報告 養護工程二科101.2.1局務會議業務報告 養護工程二科101.2.1
局務會議業務報告 養護工程二科101.2.1gongwujugongwuju
 
第47次局務會議簡報1123(簡版)
第47次局務會議簡報1123(簡版)第47次局務會議簡報1123(簡版)
第47次局務會議簡報1123(簡版)gongwujugongwuju
 
不違背職務行賄罪簡介100.08.26
不違背職務行賄罪簡介100.08.26不違背職務行賄罪簡介100.08.26
不違背職務行賄罪簡介100.08.26gongwujugongwuju
 
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.3
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.3Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.3
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.3Lenka Križanová
 
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15Lenka Križanová
 
Cheap realisticskinshading kor
Cheap realisticskinshading korCheap realisticskinshading kor
Cheap realisticskinshading kor민웅 이
 
局務會議業務報告 養護工程二科530
局務會議業務報告 養護工程二科530局務會議業務報告 養護工程二科530
局務會議業務報告 養護工程二科530gongwujugongwuju
 

En vedette (20)

2012南瀛綠都心迎春花卉展
2012南瀛綠都心迎春花卉展2012南瀛綠都心迎春花卉展
2012南瀛綠都心迎春花卉展
 
100年道路工程品質廉政研究簡報11.30
100年道路工程品質廉政研究簡報11.30100年道路工程品質廉政研究簡報11.30
100年道路工程品質廉政研究簡報11.30
 
1000622 科務報告(局務會議)-養護工程二科
1000622 科務報告(局務會議)-養護工程二科1000622 科務報告(局務會議)-養護工程二科
1000622 科務報告(局務會議)-養護工程二科
 
0802局務會議報告--使管
0802局務會議報告--使管0802局務會議報告--使管
0802局務會議報告--使管
 
Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...
Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...
Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...
 
工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2
工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2
工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2
 
第40局局務會議紀錄
第40局局務會議紀錄第40局局務會議紀錄
第40局局務會議紀錄
 
1001005科務報告
1001005科務報告1001005科務報告
1001005科務報告
 
新建二科1010524局務會議業務報告(精簡版) (1)
新建二科1010524局務會議業務報告(精簡版) (1)新建二科1010524局務會議業務報告(精簡版) (1)
新建二科1010524局務會議業務報告(精簡版) (1)
 
第21局局務會議紀錄
第21局局務會議紀錄第21局局務會議紀錄
第21局局務會議紀錄
 
第40局局務會議紀錄
第40局局務會議紀錄第40局局務會議紀錄
第40局局務會議紀錄
 
Internet decency legislation
Internet decency legislationInternet decency legislation
Internet decency legislation
 
局務會議業務報告 養護工程二科101.2.1
局務會議業務報告 養護工程二科101.2.1局務會議業務報告 養護工程二科101.2.1
局務會議業務報告 養護工程二科101.2.1
 
第47次局務會議簡報1123(簡版)
第47次局務會議簡報1123(簡版)第47次局務會議簡報1123(簡版)
第47次局務會議簡報1123(簡版)
 
不違背職務行賄罪簡介100.08.26
不違背職務行賄罪簡介100.08.26不違背職務行賄罪簡介100.08.26
不違背職務行賄罪簡介100.08.26
 
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.3
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.3Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.3
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.3
 
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15
 
Cheap realisticskinshading kor
Cheap realisticskinshading korCheap realisticskinshading kor
Cheap realisticskinshading kor
 
1010606
10106061010606
1010606
 
局務會議業務報告 養護工程二科530
局務會議業務報告 養護工程二科530局務會議業務報告 養護工程二科530
局務會議業務報告 養護工程二科530
 

Similaire à 3D Engine Tools with C++/CLR

PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장MinPa Lee
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기Jaeseung Ha
 
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~YEONG-CHEON YOU
 
The Future of C# and .NET Framework
The Future of C# and .NET FrameworkThe Future of C# and .NET Framework
The Future of C# and .NET Framework명신 김
 
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)Sang Don Kim
 
C++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaC++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaLazy Ahasil
 
The Future of .NET and C#
The Future of .NET and C#The Future of .NET and C#
The Future of .NET and C#명신 김
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)khuhacker
 
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발흥배 최
 
강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요chcbaram
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트iFunFactory Inc.
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++KyeongWon Koo
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍NDOORS
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정funmeate
 
강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍chcbaram
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 

Similaire à 3D Engine Tools with C++/CLR (20)

PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
 
The Future of C# and .NET Framework
The Future of C# and .NET FrameworkThe Future of C# and .NET Framework
The Future of C# and .NET Framework
 
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
 
C++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaC++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & Nana
 
The Future of .NET and C#
The Future of .NET and C#The Future of .NET and C#
The Future of .NET and C#
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
 
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
 
강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요
 
Manage book project
Manage book projectManage book project
Manage book project
 
Manage book project
Manage book projectManage book project
Manage book project
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
flutter
flutterflutter
flutter
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
 
강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 

Plus de 민웅 이

Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...민웅 이
 
PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation 민웅 이
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현민웅 이
 
자동 동적 3차원 입체시각
자동 동적 3차원 입체시각자동 동적 3차원 입체시각
자동 동적 3차원 입체시각민웅 이
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11민웅 이
 
Post processing in_color
Post processing in_colorPost processing in_color
Post processing in_color민웅 이
 
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리민웅 이
 
Valient killzone ps4 lighting
Valient killzone ps4 lightingValient killzone ps4 lighting
Valient killzone ps4 lighting민웅 이
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)민웅 이
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4민웅 이
 
Microfacet brdf
Microfacet brdfMicrofacet brdf
Microfacet brdf민웅 이
 
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌민웅 이
 
Wrapped diffuse
Wrapped diffuseWrapped diffuse
Wrapped diffuse민웅 이
 
Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)민웅 이
 
Gamma and linear color-space
Gamma and linear color-spaceGamma and linear color-space
Gamma and linear color-space민웅 이
 
Deferred decal
Deferred decalDeferred decal
Deferred decal민웅 이
 

Plus de 민웅 이 (17)

Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
 
PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현
 
자동 동적 3차원 입체시각
자동 동적 3차원 입체시각자동 동적 3차원 입체시각
자동 동적 3차원 입체시각
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11
 
Post processing in_color
Post processing in_colorPost processing in_color
Post processing in_color
 
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
 
Valient killzone ps4 lighting
Valient killzone ps4 lightingValient killzone ps4 lighting
Valient killzone ps4 lighting
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4
 
Microfacet brdf
Microfacet brdfMicrofacet brdf
Microfacet brdf
 
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
 
Wrapped diffuse
Wrapped diffuseWrapped diffuse
Wrapped diffuse
 
Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)
 
Gamma and linear color-space
Gamma and linear color-spaceGamma and linear color-space
Gamma and linear color-space
 
Ceh
CehCeh
Ceh
 
Deferred decal
Deferred decalDeferred decal
Deferred decal
 

3D Engine Tools with C++/CLR

  • 1. 이민웅 참고 ) ShaderX6 8.2 3D ENGINE TOOLS WITH C++/CLR
  • 2. 3D Engine Tools  엔진은 C++로 툴은 C#으로 개발하고 싶을때 사용  엔진/툴 독립적으로 유지 관리  툴 개발시 GUI부분의 시간 단축  약간의 노가다 작업 필요  서버와 클라이언트 같은 작업 필요
  • 3. CLR  CLR(Common Language Runtime) 공통 언어 런타임  성능 향상  CLR의 JIT 컴파일러를 통해 만들어진 코드는 unmanaged code에 비해 성능이 우수  개체 수명을 관리하는 가비지 수집  CLR의 장점이라기 보다는 .NET Framework 차원 에서 지원하는 장점
  • 4. C#  .Net Framework 사용  Java 와 비슷함  툴 개발이 쉽다  GUI 개발이 편리함  Windows Form  WPF  Xaml 방식, DirectX 랜더링, Shader도 사용가능  C++과 연동하기 위해 CLR를 사용
  • 6. C++과 CLR 코딩 방식  포인터의 사용  C++ : test * temp = new test()  CLR : test^ temp = gcnew temp()  주소값사용은 & -> %  NULL 체크 NULL -> nullptr  클래스  C++ : class Test  CLR : public ref class Test
  • 7. String 변환  C#은 기본적으로 Unicode만 지원  Marshal 라이브러리를 사용하여 간단히 C++ 용으로 변환  닷넷 프레임워크 3.0부터 지원  3.0이전 버전에는 문제가 많았음 msclr::interop::marshal_context ctx; const char* ch = ctx.marshal_as<const char*> (str);  C# 외부 DLL 링크도 가능 public sealed class DevilAPI { private const string DEVIL_LIBRARY = "Devil.dll"; [DllImport(DEVIL_LIBRARY, CallingConvention = CallingConvention.Winapi), SuppressUnmanagedCodeSecurity] public static extern void ilInit(); }
  • 8. Wrapper(CLR)  C++의 데이터를 C#에서 사용하기 위해서는 C++에 사용하는 데이터 구조를 C#쪽에 새로 만듬  저의 경우는 CLR 부분에서는 C++ <-> C#쪽의 데 이터의 변환 부분만 해줌  툴 기능 코드들은 CLR과 C#쪽에서 모두 처리 Engine AData Wrapper(CLR) SetAData UpdateAData Tool ADataInfo
  • 9. Wrapper ※ 이런식의 구조도 될 수 가 있음 참고 ) 툴과 오버 엔지니어링 그리고 벽돌 http://gamedevforever.com/23