Gamebryo 템플릿 클래스
Gamebryo/Learn / 2010. 4. 8. 20:00
1) Lists(NiTPointerList)
- 포인터나 스마트 포인터 또는 포인터 크기만하거나 더 작은 다른 요소를 저장하고 관리할 수 있다.
- 어떤 요소에서든 삽입/삭제가 효과적.
- 모든 요소를 통해 전/후 반복(iteration)이 효과적.
- 리스트를 검색해서 주어진 값으로 된 요소의 존재와 위치를 찾을 수 있다.
- NiTPointerList의 아이템들은 공유 pool로부터 블록으로 할당되므로, 처리 속도가 빨라지고 메모리 효율적으로 됨.
- 포인터보다 큰 오브젝트들의 리스트에는 NiTObjectList를 사용.
2) Array(NiTArray)
- 거의 모든 타입의 객체가 들어있는 동적 배열을 구현함.
- 이 배열은 늘어나거나 줄어들 수 있으며, 필요하다면 압축(빈 공간을 없애기 위해 요소들을 시프트(shift)시킴)할 수도 있다.
- 고유 타입(char*, float, int 등)에는 NiTPrimitiveArray 사용
- NiMemObject에서 파생한 타입에는 NiTObjectArray 사용.
- 요소의 개수는 65535개로 제한.
(그 이상을 사용하려면 NiTLargePrimitiveArray나 NiTLargeObjectArray같은 NiTLargeArray 파생 클래스 사용.)
3) Map(NiTPointerMap)
- ("사전"이라고도 알려진) 해시 테이블(hash-table)기능을 구현하여, 어떤 유형의 키든..포인터나 스마트 포인터 또는 포인터 크기만하거나 더 작은 다른 타입의 요소에 맵핑하게 해줌.
- 이 객체를 사용하면 키와 값으로 이루어진 쌍의 저장이나 검색(lookup)이 빨라짐.
- 캐릭터의 문자열키 해시 테이블에는 사용 X(NiTStringPointerMap을 사용)
- NiTPointerMap과 NiTStringPointerMap의 아이템들은 공유 pool로부터 블록으로 할당되므로, 이 클래스의 처리 속도가 빨라지고 메모리 효율적으로 됨.
- 포인터보다 큰 오브젝트들의 맵에는 NiTMap이나 NiTStringMap을 사용.
4) StringMap
- NiTStringMap과 NiTStringPointerMap 객체는 NiTMap 및 NiTPointerMap 객체와 비슷한 방식으로 기능하지만 character string을 키로 받아들이며, 키 해싱(key hashing)을 위해 문자열을 비교함.
5) FixedStringMap(NiTFixedStringMap)
- NiTMap 객체와 비슷한 방식으로 기능하나 NiFixedString 객체를 키로 받아들임.
6) Queue(NiTQueue)
- 거의 모든 타입의 객체에 대한 선입선출(FIFO) 큐를 구현함.
- 스마트 포인터는 지원되지 않음.
7) Set(NiTSet)
- 거의 모든 타입의 객체에 대한 순서 없는 세트를 구현.
- 스마트 포인터는 지원되지 않음.
- 고유 타입(char*, float, int, 등)에는 NiTPrimitiveSet을 사용
- NiMemObject에서 파생한 타입에는 NiTObjectSet을 사용
- 오브젝트의 스마트 포인터에는 레퍼런스 카운트를 올바르게 처리하는 NiTObjectPtrSet이나 NiTPrimitivePtrSet을 사용.
8) Pool(NiTPool)
- 작은 객체들의 pool을 구현.
- 이렇게 하면 어플리케이션은 작은 객체들을 개별적으로 할당/해제하기 보단, 이 객체들을 한꺼번에 할당하고 pool을 통해 재사용할 수 있게 됨.
- 포인터나 스마트 포인터 또는 포인터 크기만하거나 더 작은 다른 요소를 저장하고 관리할 수 있다.
- 어떤 요소에서든 삽입/삭제가 효과적.
- 모든 요소를 통해 전/후 반복(iteration)이 효과적.
- 리스트를 검색해서 주어진 값으로 된 요소의 존재와 위치를 찾을 수 있다.
- NiTPointerList의 아이템들은 공유 pool로부터 블록으로 할당되므로, 처리 속도가 빨라지고 메모리 효율적으로 됨.
- 포인터보다 큰 오브젝트들의 리스트에는 NiTObjectList를 사용.
2) Array(NiTArray)
- 거의 모든 타입의 객체가 들어있는 동적 배열을 구현함.
- 이 배열은 늘어나거나 줄어들 수 있으며, 필요하다면 압축(빈 공간을 없애기 위해 요소들을 시프트(shift)시킴)할 수도 있다.
- 고유 타입(char*, float, int 등)에는 NiTPrimitiveArray 사용
- NiMemObject에서 파생한 타입에는 NiTObjectArray 사용.
- 요소의 개수는 65535개로 제한.
(그 이상을 사용하려면 NiTLargePrimitiveArray나 NiTLargeObjectArray같은 NiTLargeArray 파생 클래스 사용.)
3) Map(NiTPointerMap)
- ("사전"이라고도 알려진) 해시 테이블(hash-table)기능을 구현하여, 어떤 유형의 키든..포인터나 스마트 포인터 또는 포인터 크기만하거나 더 작은 다른 타입의 요소에 맵핑하게 해줌.
- 이 객체를 사용하면 키와 값으로 이루어진 쌍의 저장이나 검색(lookup)이 빨라짐.
- 캐릭터의 문자열키 해시 테이블에는 사용 X(NiTStringPointerMap을 사용)
- NiTPointerMap과 NiTStringPointerMap의 아이템들은 공유 pool로부터 블록으로 할당되므로, 이 클래스의 처리 속도가 빨라지고 메모리 효율적으로 됨.
- 포인터보다 큰 오브젝트들의 맵에는 NiTMap이나 NiTStringMap을 사용.
4) StringMap
- NiTStringMap과 NiTStringPointerMap 객체는 NiTMap 및 NiTPointerMap 객체와 비슷한 방식으로 기능하지만 character string을 키로 받아들이며, 키 해싱(key hashing)을 위해 문자열을 비교함.
5) FixedStringMap(NiTFixedStringMap)
- NiTMap 객체와 비슷한 방식으로 기능하나 NiFixedString 객체를 키로 받아들임.
6) Queue(NiTQueue)
- 거의 모든 타입의 객체에 대한 선입선출(FIFO) 큐를 구현함.
- 스마트 포인터는 지원되지 않음.
7) Set(NiTSet)
- 거의 모든 타입의 객체에 대한 순서 없는 세트를 구현.
- 스마트 포인터는 지원되지 않음.
- 고유 타입(char*, float, int, 등)에는 NiTPrimitiveSet을 사용
- NiMemObject에서 파생한 타입에는 NiTObjectSet을 사용
- 오브젝트의 스마트 포인터에는 레퍼런스 카운트를 올바르게 처리하는 NiTObjectPtrSet이나 NiTPrimitivePtrSet을 사용.
8) Pool(NiTPool)
- 작은 객체들의 pool을 구현.
- 이렇게 하면 어플리케이션은 작은 객체들을 개별적으로 할당/해제하기 보단, 이 객체들을 한꺼번에 할당하고 pool을 통해 재사용할 수 있게 됨.
반응형
'Gamebryo > Learn' 카테고리의 다른 글
겜브리오의 텍스처 공유 (0) | 2011.11.11 |
---|---|
DirectX 디바이스 얻어오기 (0) | 2010.11.04 |
충돌 박스 노드에 임시 생성 (0) | 2010.07.02 |
여러창 동시 렌더링 (0) | 2010.07.02 |
렌더러를 만들어보자 (0) | 2010.04.08 |