GPG Study1.4 1.7 1.12               visualwizard
1.4 게임 프로그래밍에서의 STL 활용1.7 자원과 메모리 관리1.12 assert의 비법들
1.4 게임 프로그래밍에서의 STL 활용                              Genericity of components  “The use of templates allow you to reduce th...
1.4 게임 프로그래밍에서의 STL 활용                             Abstract and implicit data types  Implicit data types are not important...
1.4 게임 프로그래밍에서의 STL 활용 Containers  순차 컨테이너 ( sequence container )  vector, list, deque, …  연관 컨테이너 ( associative container...
1.4 게임 프로그래밍에서의 STL 활용   begin() , end()     알고리즘에서 last iterator는 마지막 원소를                       가리키지 않는다.   rbegin() , re...
1.4 게임 프로그래밍에서의 STL 활용 Container  Sequence container   타입이 동일한 객체들을 선형으로 구성  vector< T > : 컨테이너 요소에 임의 접근( i번째 원소의 접근 시간은 ...
1.4 게임 프로그래밍에서의 STL 활용 Container  Associative container   주어진 키로 객체들을 신속하게 찾음  set< key >         : 유일한 키 ( unique key )  ...
1.4 게임 프로그래밍에서의 STL 활용 Iterator  입력-iterator  출력-iterator  순방향-iterator  …  각각의 iterator들은 특정 연산자를 구현하고 있어야 한다. Algorithms...
1.4 게임 프로그래밍에서의 STL 활용                         café.naver.com/architect1
1.7 자원과 메모리 관리 게임은 많은 메모리 사용을 요구함. ( 그래픽, 사운드, 모델, 애니메이션 .. )  => 목표는 게임의 흐름( 데이터 로딩 or 게임 액션 )이 끊겨서는 안된다.  => 주어진 메모리 보다 ...
1.7 자원과 메모리 관리 class BaseResource  다른 자원 컨테이너 클래스들은 이 클래스를 기반으로 하여 파생  Create() - 자원 데이터의 로드. 반복적 생성 요청에 대한 처리 포함  Dispose...
1.7 자원과 메모리 관리 class BaseResource
1.7 자원과 메모리 관리 class ResManager  BaseResource를 통해 생성된  자원들을 관리하는 클래스
1.7 자원과 메모리 관리 class ResManager   자원의 핸들(UINT) 과 객체에 대한 포인터를 Map으로 관리   typedef std::map<RHANDLE, BaseResource*> ResMap;  ...
1.7 자원과 메모리 관리 class ResManager   InsertResource() – 추가하는 자원의 크기가 현재 준비된 메모리보다 큰 경우   필요한 메모리를 확보할 때 까지 기존 자원을 해제. ( 우선순위에...
1.12 assert의 비법들 #1 : 더 많은 정보를 집어넣는다.            assert 동작 이유를 string으로 추가
1.12 assert의 비법들 #2 : 좀 더 많은 정보를 집어넣는다.     assert(0)     assert(! “좀 더 많은 정보들”)            프로그램이 수행되지 말아야 할 곳을 감지.       ...
1.12 assert의 비법들 #3 : 좀 더 편하게
1.12 assert의 비법들 #4 : 커스텀 assert 만들기      커스텀 함수를 만들고 결과에 따라 코드를 breaking 한다.
1.12 assert의 비법들 #5 : 이것도 중요      자주 실행되는 루틴에 있을 경우 flag를 주어서 상태 값에 따라      작동 여부를 결정하도록 한다
1.12 assert의 비법들 #6 : 초고수만 볼 것      assert가 실행되는 이유는 사실 그 이전에 원인이 있다.      -> 프로그램의 스택 정보가 필요!                      “BugSl...
1.12 assert의 비법들 #7 : 좀 더 쉽게 – 복사해서 붙여 넣기      스택 정보의 내용을 클립보드로. CustomAssertFunction에 추가
1.12 assert의 비법들
Upcoming SlideShare
Loading in...5
×

Gpg1

330

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
330
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Gpg1"

  1. 1. GPG Study1.4 1.7 1.12 visualwizard
  2. 2. 1.4 게임 프로그래밍에서의 STL 활용1.7 자원과 메모리 관리1.12 assert의 비법들
  3. 3. 1.4 게임 프로그래밍에서의 STL 활용 Genericity of components “The use of templates allow you to reduce the number m to 1 ( m is possible data types ). STL algorithms, however, do not work directly with containers but with Interface object, that is, iterators which access containers.”
  4. 4. 1.4 게임 프로그래밍에서의 STL 활용 Abstract and implicit data types Implicit data types are not important in the sense of an object-oriented analysis which puts the emphasis on the interfaces (methods) if an abstract data types. They, however, are very important for design and Implementation because they often determine the run time behavior.
  5. 5. 1.4 게임 프로그래밍에서의 STL 활용 Containers 순차 컨테이너 ( sequence container ) vector, list, deque, … 연관 컨테이너 ( associative container ) map, set, … Iterators “Pointer-like objects” Algorithms “The Template algorithms work with iterators that access containers.”
  6. 6. 1.4 게임 프로그래밍에서의 STL 활용 begin() , end() 알고리즘에서 last iterator는 마지막 원소를 가리키지 않는다. rbegin() , rend() “past-the-end” Call by value
  7. 7. 1.4 게임 프로그래밍에서의 STL 활용 Container Sequence container 타입이 동일한 객체들을 선형으로 구성 vector< T > : 컨테이너 요소에 임의 접근( i번째 원소의 접근 시간은 상수 )이 가능하다. deque< T > : vector 와 유사. 컨테이너의 앞 부분에도 연산이 가능하다. list< T > : 요소의 접근 시간은 O(N). N은 크기. 삽입과 삭제는 상수 시간.
  8. 8. 1.4 게임 프로그래밍에서의 STL 활용 Container Associative container 주어진 키로 객체들을 신속하게 찾음 set< key > : 유일한 키 ( unique key ) multiset< key > : 중복키를 지원 ( duplicate key ) map< key, T > : key는 unique. T는 value. 주어진 key로 value를 찾을 수 있다. multimap<key, T> : map과 유사. key는 중복을 허용
  9. 9. 1.4 게임 프로그래밍에서의 STL 활용 Iterator 입력-iterator 출력-iterator 순방향-iterator … 각각의 iterator들은 특정 연산자를 구현하고 있어야 한다. Algorithms nonmutating sequence algorithm : find , search mutating sequence algorithm : unique sorting-related algorithm generalized numeric algorithm
  10. 10. 1.4 게임 프로그래밍에서의 STL 활용 café.naver.com/architect1
  11. 11. 1.7 자원과 메모리 관리 게임은 많은 메모리 사용을 요구함. ( 그래픽, 사운드, 모델, 애니메이션 .. ) => 목표는 게임의 흐름( 데이터 로딩 or 게임 액션 )이 끊겨서는 안된다. => 주어진 메모리 보다 많은 양을 사용할 수 있도록 준비 사용자 패턴에 기반하여 데이터를 자동적으로 불러오거나 폐기할 수 있는 자원 객체 정의 이러한 사용 가능한 자원들을 관리 , 분배 및 접근을 제어하는 관리자.
  12. 12. 1.7 자원과 메모리 관리 class BaseResource 다른 자원 컨테이너 클래스들은 이 클래스를 기반으로 하여 파생 Create() - 자원 데이터의 로드. 반복적 생성 요청에 대한 처리 포함 Dispose() , Recrete() – 자원과 메모리의 교체. 자원의 의미 있는 부분들만 교체한다. operator < () – 자원의 폐기를 위한 우선 순위 정렬
  13. 13. 1.7 자원과 메모리 관리 class BaseResource
  14. 14. 1.7 자원과 메모리 관리 class ResManager BaseResource를 통해 생성된 자원들을 관리하는 클래스
  15. 15. 1.7 자원과 메모리 관리 class ResManager 자원의 핸들(UINT) 과 객체에 대한 포인터를 Map으로 관리 typedef std::map<RHANDLE, BaseResource*> ResMap; typedef ResMap::iterator ResMapItor; typedef ResMap::value_type ResMapPair;
  16. 16. 1.7 자원과 메모리 관리 class ResManager InsertResource() – 추가하는 자원의 크기가 현재 준비된 메모리보다 큰 경우 필요한 메모리를 확보할 때 까지 기존 자원을 해제. ( 우선순위에 따라 )
  17. 17. 1.12 assert의 비법들 #1 : 더 많은 정보를 집어넣는다. assert 동작 이유를 string으로 추가
  18. 18. 1.12 assert의 비법들 #2 : 좀 더 많은 정보를 집어넣는다. assert(0) assert(! “좀 더 많은 정보들”) 프로그램이 수행되지 말아야 할 곳을 감지. 그리고 디버깅 정보를 제공
  19. 19. 1.12 assert의 비법들 #3 : 좀 더 편하게
  20. 20. 1.12 assert의 비법들 #4 : 커스텀 assert 만들기 커스텀 함수를 만들고 결과에 따라 코드를 breaking 한다.
  21. 21. 1.12 assert의 비법들 #5 : 이것도 중요 자주 실행되는 루틴에 있을 경우 flag를 주어서 상태 값에 따라 작동 여부를 결정하도록 한다
  22. 22. 1.12 assert의 비법들 #6 : 초고수만 볼 것 assert가 실행되는 이유는 사실 그 이전에 원인이 있다. -> 프로그램의 스택 정보가 필요! “BugSlayer” http://blog.naver.com/harkon?Redirect=Log&logNo=120063141029
  23. 23. 1.12 assert의 비법들 #7 : 좀 더 쉽게 – 복사해서 붙여 넣기 스택 정보의 내용을 클립보드로. CustomAssertFunction에 추가
  24. 24. 1.12 assert의 비법들

×