Sunday, May 22, 2011

VXFramework Overview

VXFramework은 다음의 세 가지 Frame으로 구성된다.

1. Engine Frame

  • Engine API for platform developer
  • File Interface for importing and exporting data
  • Data Structures for module development and resource management
  • Module Arbiter and Resource Manager

2. Module Frame

  • Base Interface Module Arbiter and Module
3. Platform Frame

  • CLI wrapper to convert C++ based-API into C# interface
  • Global Header for Helper functions and Based Objects
  • Engine Center for native resource/module items (as symbol) and engine commander based on CLI wrapper
  • Common Controls for engine manipulation UI
  • Main Window for integration (G)UIs

Engine Frame은 Engine Module 및 플랫폼 프로세싱의 대상이 되는 Resource를 관리하는 역할을 하며, Module Frame은 Engine Module을 정의한다.
그리고 Platform Frame은 VXFramework 을 통해 구현하고자 하는 최종 Platform을 효율적으로 설계하기 위해 Native와 Managed Code의 Interoperation을 해 주고, 각종 사용자 컨트롤을 위한 Component로 구성되어 있다.

VXFramework에서는 자유도 높은 Function의 확장성 뿐만 아니라, 주로 사용하게 되는 방대한 용량의 Resource를 효율적으로 관리하기 위해 C#의 TreeViewItem을 상속 받는 ObjectTreeViewItem 이라는 자료구조를 정의하고 이를 단위로 Resource를 컨트롤한다.

이것은 WPF에서 제공하는 Object Browser인 TreeView 를 사용하여 현재 Resource 상황을 다음과 같이 확인할 수 있다.


Tree Item의 상속관계는 Resource 를 Platform의 Contents로 어떻게 사용하느냐에 따라 다르게 설계될 수 있으며 Resource에 대한 ObjectTreeViewItem 설정 및 해제는 다음의 규칙을 따른다.

  • Item 추가 : Native에 존재하고 있는 Resource를 Item으로 추가하여 Tree View에서 Story에 적합한 상속 구조를 구성할 수 있으며 이 경우 Native Resource ID를 Item이 공유하게 된다.
  • Item 삭제 : 현재 노드 및 하위 노드의 모든 Item 을 recursive하게 삭제한다. Native Resource는 Reference Count 방식을 통해, 해당 Resource를 참조하고 있는 Item이 하나일 경우일 때만 삭제되어 최종적으로 메모리에서 제거된다.

VXFramework 은 위대하다. -_-b

No comments: