3d engine tools with c++/ clr

10
3D ENGINE TOOLS WITH C+ +/CLR 이이이 이이 ) ShaderX6 8.2

Upload: wylie

Post on 05-Jan-2016

43 views

Category:

Documents


3 download

DESCRIPTION

이민웅 참고 ) ShaderX6 8.2. 3D Engine Tools with C++/ CLR. 3D Engine Tools. 엔진은 C++ 로 툴은 C# 으로 개발하고 싶을때 사용 엔진 / 툴 독립적으로 유지 관리 툴 개발시 GUI 부분의 시간 단축 약간의 노가다 작업 필요 서버와 클라이언트 같은 작업 필요. CLR. CLR(Common Language Runtime) 공통 언어 런타임 성능 향상 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 3D Engine Tools with C++/ CLR

3D ENGINE TOOLS WITH C++/CLR

이민웅참고 ) ShaderX6 8.2

Page 2: 3D Engine Tools with C++/ CLR

3D Engine Tools

엔진은 C++ 로 툴은 C# 으로 개발하고 싶을때 사용

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

서버와 클라이언트 같은 작업 필요

Page 3: 3D Engine Tools with C++/ CLR

CLR

CLR(Common Language Runtime) 공통 언어 런타임

성능 향상 CLR 의 JIT 컴파일러를 통해 만들어진 코드는

unmanaged code 에 비해 성능이 우수 개체 수명을 관리하는 가비지 수집

CLR 의 장점이라기 보다는 .NET Framework 차원에서 지원하는 장점

Page 4: 3D Engine Tools with C++/ CLR

C#

.Net Framework 사용 Java 와 비슷함 툴 개발이 쉽다

GUI 개발이 편리함 Windows Form WPF

Xaml 방식 , DirectX 랜더링 , Shader 도 사용가능 C++ 과 연동하기 위해 CLR 를 사용

Page 5: 3D Engine Tools with C++/ CLR

C++/CLR

CLRC++ C#

Wrapper

Page 6: 3D Engine Tools with C++/ CLR

C++ 과 CLR 코딩 방식

포인터의 사용 C++ : test * temp = new test() CLR : test^ temp = gcnew temp()

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

클래스 C++ : class Test CLR : public ref class Test

Page 7: 3D Engine Tools with C++/ CLR

String 변환

C# 은 기본적으로 Unicode 만 지원 Marshal 라이브러리를 사용하여 간단히

C++ 용으로 변환 닷넷 프레임워크 3.0 부터 지원 3.0 이전 버전에는 문제가 많았음

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();}

msclr::interop::marshal_context ctx;const char* ch = ctx.marshal_as<const char*> (str);

Page 8: 3D Engine Tools with C++/ CLR

Wrapper(CLR)

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

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

Engine

AData

Tool

ADataInfo

Wrapper(CLR)

SetADataUpdateA-

Data

Page 9: 3D Engine Tools with C++/ CLR

Wrapper

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

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

Page 10: 3D Engine Tools with C++/ CLR

감사합니다 .