티스토리

게임 개발 포에버
검색하기

블로그 홈

게임 개발 포에버

gamedevforever.com/m

김포프 님의 블로그입니다.

구독자
6
방명록 방문하기
공지 필자 프로필 모두보기

주요 글 목록

  • The Modernest C++ #5 - 컴포넌트와 템플릿 메타프로그래밍 - 下 [이전 글]The Modernest C++ #0 - 시작하며The Modernest C++ #1 - 템플릿 메타프로그래밍 (Template Metaprogramming)The Modernest C++ #2 - 타입을 가지고 놀아보기, type_traitsThe Modernest C++ #3 - 수학 라이브러리The Modernest C++ #4 - 컴포넌트와 템플릿 메타프로그래밍 - 上 컴포넌트와 템플릿 메타 프로그래밍 - 下 본 게시물에 첨부된 모든 이미지는 클릭시 확대됩니다. 참고하세요! 저번 시간에는 정적 멤버의 포인터를 활용하여 컴포넌트의 식별자(identifier)로 사용함으로서 오타 발생 방지, 속도, 생산성 면에서 획기적으로 도움을 받을수 있는 방법을 배웠습니다. 이로써 모든 작업이 끝난것 .. 공감수 3 댓글수 2 2016. 1. 27.
  • The Modernest C++ #4 - 컴포넌트와 템플릿 메타프로그래밍 上 [이전 글]The Modernest C++ #0 - 시작하며The Modernest C++ #1 - 템플릿 메타프로그래밍 (Template Metaprogramming)The Modernest C++ #2 - 타입을 가지고 놀아보기, type_traitsThe Modernest C++ #3 - 수학 라이브러리 컴포넌트와 템플릿 메타프로그래밍 - 上 본 글은 끼로님의 컴포넌트 기반 개발 디자인 기법을 보고 영감을 얻어 템플릿 메타프로그래밍을 각색한 방법을 설명하는 글입니다. 우리는 이전 시간까지 템플릿 메타프로그래밍의 전반적인 내용을 배웠습니다. 템플릿을 이용하여 수학적 연산도 했으며, 타입을 검사하고 조작하는 기능을 다뤄보면서 이점이 무엇인지를 알게 되었고 반대로 템플릿 메타프로그래밍만의 가독성과 같은 .. 공감수 1 댓글수 4 2016. 1. 17.
  • The Modernest C++ #3 - 수학 라이브러리 [이전 글]The Modernest C++ #0 - 시작하며The Modernest C++ #1 - 템플릿 메타프로그래밍 (Template Metaprogramming)The Modernest C++ #2 - 타입을 가지고 놀아보기, type_traits수학 라이브러리 이전 글까지 우리는 템플릿 메타프로그래밍을 이용하여 컴파일 타임에 타입을 확인하고, 관리하는 역할을 가지는 메타 함수를 작성해보면서 기본기를 익히는 시간을 가졌습니다. 하지만 천만 다행이게도 템플릿 메타프로그래밍의 위력은 여기서 끝이 아닙니다. 그저 타입만을 가지고 연산할수 있는게 아니라 우리는 이제 C++ 의 비형식 템플릿 매개변수를 눈여겨봐야 할 차례가 왔습니다. 우리는 저번 시간에 배운대로 보자면 의 is_true 메타 함수는 템플릿.. 공감수 0 댓글수 0 2016. 1. 4.
  • The Modernest C++ #2 - 타입을 가지고 놀아보기, type_traits [이전 글]The Modernest C++ #0 - 시작하며The Modernest C++ #1 - 템플릿 메타프로그래밍 (Template Metaprogramming) 요번 2주 동안 정말로 말도 못할 정도로 바빠서 컴퓨터 앞에도 못앉고 개발도 못하고 살았네요.. ;ㅅ; 그래서 이번주 부터는 버닝하고(?) 글을 써보도록 하겠습니다 ㅠㅠ 용서해주세요 독자 여러분들 m(_ _)m 타입을 가지고 놀아보기, type_traits 자, 저번 연재 글 까지는 템플릿 메타프로그래밍의 정의를 알아보았다면 이번 글 부터는 실전에서의 템플릿 메타프로그래밍을 접해볼 시간입니다. 템플릿 메타프로그래밍 자체가 가독성에서 불리한 면을 가지고 있지만 그래도 잘 따라오셨으면 좋겠습니다 :^) 우선 시작하기에 앞서, boost 라는.. 공감수 2 댓글수 5 2015. 10. 28.
  • The Modernest C++ #1 - 템플릿 메타프로그래밍 (Template Metaprogramming) [이전 글]The Modernest C++ #0 - 시작하며템플릿 메타프로그래밍 (Template Metaprogramming)https://ko.wikipedia.org/wiki/%ED%85%9C%ED%94%8C%EB%A6%BF_%EB%A9%94%ED%83%80%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D - 위키피디아 '템플릿 메타프로그래밍'템플릿 메타프로그래밍은 말 그대로 C++ 의 템플릿을 하나의 프로그래밍 언어로 생각하여 프로그래밍 하는 것이라고 보는게 좋습니다. C++ 의 주요 기능인 템플릿은 OS나 아키텍처에 종속되는 기능이 아니기 때문에 크로스 플랫폼에도 용이하기도 하면서 튜링 완전한 점에 있어서 아주 다양한 기능을 작성할수 있다는 점에 주목해야합니다.위.. 공감수 1 댓글수 5 2015. 10. 7.
  • The Modernest C++ #0 - 시작하며 안녕하세요! 이번에 게임 개발 포에버에서 연재를 하게 된 게임 그래픽스 프로그래머를 꿈꾸는 지망생 터너라고 합니다. 비록.. 필드 경험은 없지만 5년 동안 달려온(..) 결과로 얻은 프로그래밍 노하우와 지식들을 한번 공유해보자 하여 이렇게나마 연재를 하게되었..는데 그릇이 워낙에 작아서 도움이 되실법한 글을 작성할수 있을런지는 모르겠지만 잘 봐주셨으면 좋겠습니다. :^)연재할 내용은 Modern C++ Style 위주로 작성 될것 같고 보시는 내내 도움 되셨으면 좋겠습니다. 앞으로 연재할 내용의 오탈자나 이상한 부분은 댓글로 직접 문의하셔도 좋고 제 블로그(http://cloudcie.blog.me/)에서 문의해주셨으면 하는 바램입니다. 시작하며.. C++은 (물론 다른 언어도 그렇지만) 템플릿이라는 강.. 공감수 0 댓글수 4 2015. 10. 6.
  • 구조체 멤버 정렬 (Struct Member Alignment) 구조체의 멤버 변수를 정렬하는 것만으로도 구조체의 크기가 달라진다는 거 아시나요? 아래와 같이 구조체에 여러 타입들을 섞어서 썼을 경우 구조체 사이즈를 알아보겠습니다. struct StructNonSorted { bool bool1; int int1; int int2; bool bool2; char char1; int int3; char char2; int int4; char char3; int int5; bool bool3; int int6; bool bool4; }; 다음은 타입별로 멤버 변수를 정렬시켰을때의 구조체 크기를 살펴 보겠습니다. struct StructSorted { bool bool1; bool bool2; bool bool3; bool bool4; char char1; char cha.. 공감수 5 댓글수 0 2015. 8. 4.
  • 차세대 그래픽 API 오랜만에 글을 남겨보렵니다... 요즘 모바일게임의 경쟁이 치열한 관계로 살아남기 위해서 과하게 일하다가 이렇게 살다가는 재미없어서 죽을 것 같아서, 올 해부터는 조금씩 개인적으로나마 엔진 쪽 작업을 하기 시작했습니다. 개발하기 앞서 준비 작업을 하다가 정리한 내용 중에 상식적으로 알면 좋을 것 같은 내용을 적어보려고 합니다. (아마 다들 아실 내용 같은데.. 음...). 최근에는 다들 유니티 엔진이나 언리얼 엔진을 사용하고 계실 것이기 때문에, 특별히 엔진 코어한 내용에 대해서는 이야기 하지 않겠습니다. ㅎㅎㅎ엔진에서 멀티플랫폼을 지원해야 한다는 것은 이제는 너무 당연한 이야기입니다. 사실 유니티, 언리얼도 국내에서는 모바일에만 주로 사용하지만, PC, 모바일, 콘솔 거의 모든 플랫폼을 지원하니까요. 이.. 공감수 1 댓글수 0 2015. 2. 24.
  • 실시간 그림자를 싸게 그리자! 평면상의 그림자 ( Planar Shadow) 그래픽을 표현하는데 있어서 그림자는 매우 중요합니다. 그림자가 존재함으로써 사물의 공간상 위치를 인지하기 쉽게 만들어주고 입체감을 더해주게됩니다. 그림자는 입체 공간을 구성하는데 있어 거의 필수적인 요소라해도 과언이 아닙니다.이는 게임에 있어서도 마찬가지입니다. 그런 이유로 모든 3D 게임에는 어떠한 형태로든 그림자가 존재합니다. 그리고 당연히 유니티에서도 그림자 기능을 제공해줍니다. 사용법 역시 체크박스만 몇 번 해주면 되는 식으로 되어있어 손쉽게 그림자를 활성화시킬 수 있습니다. (공식 메뉴얼 : http://docs.unity3d.com/Manual/class-MeshRenderer.html) 유니티에서 제공해주는 그림자는 그림자맵(ShadowMap) 기법을 사용하고있습니다. 이 기법은 모든 굴곡에.. 공감수 0 댓글수 4 2015. 2. 23.
  • 템플릿 특수화 ( Template Specialization ) 타입은 다른데 같은 작업을 하는 클래스나 함수를 구현을 할때 템플릿을 사용합니다. 아래와 같이 말이죠. template class CFoo { public: T Add(T lhs, T rhs) { return lhs + rhs; } }; int _tmain(int argc, _TCHAR* argv[]) { CFoo integer; std::cout 공감수 2 댓글수 2 2015. 2. 5.
  • C# Boxing과 Unboxing 요즘 유니티를 이용해 C#으로 코딩을 하시는 분들이 많은데, 간혹 면접을 보다보면 Boxing과 Unboxing에 대해 제대로 이해하지 못하는 분들이 많더군요. 이를 C/C++의 캐스팅 같은 것으로 생각하고 마구잡이로 사용하시는 분들이 많은듯 합니다. 하지만 C/C++의 캐스팅과 다르게 C#의 Boxing은 그 과정에서 개체 할당이 일어 나기 때문에 성능 이슈가 생길수 있습니다. int num1 = 123; object obj = num1; // boxing int num2 = (int)obj; // unboxing C#에서 사용되는 모든 타입들은 object 에서 직/간접적으로 상속을 받게 됩니다. 즉, 최상위 부모 클래스 같은 존재지요. 이것이 C/C++에서 였다면, 위의 num1에서 obj로의 대입.. 공감수 6 댓글수 1 2015. 1. 30.
  • Unity Cloud Data 소개 만일 여러분이 게임을 출시했는데 난이도가 넘 어렵다는 평이 많다고 가정해봅시다. 그래서 주인공의 공격력과 방어력을 조절해야 합니다. 근데 로직은 변한 것 하나 없고 단순히 수치만 변경했는데도 빌드를 새로하고 다시 업로드를 해야하네요. 안드로이드는 업로드하면 그나마 몇시간 후면 반영되는데 아이폰은 일주일을 꼬박 기다려야하네요. 뭐 별수 있나요 눈물을 머금고 기다려서 난이도 패치를 끝냈습니다. 그 기념으로 일시적으로 아이템 드랍률을 올려주는 이벤트를 하려고 합니다. 이번에도 로직은 바뀌는 것 없이 단순 데이터 수치만 바뀌는건데도 빌드를 다시 해야하네요. 안드로이드와 아이폰간의 빌드 반영 딜레이 뿐만 아니라 업데이트 받은 유저와 아닌 유저의 차이도 골치아프겠네요.물론 클라이언트-서버 구조로 되어 있는 게임은 .. 공감수 1 댓글수 3 2015. 1. 15.
  • sort와 stable_sort 최근 sort와 stable_sort를 써볼일이 있어서 포스팅해봅니다. 일반적으로 sort 알고리즘을 자주 쓰는데, stable_sort 라는 것도 있더군요. MSDN에 나와있는 stable_sort의 특징으로는 아래와 같습니다. 복잡도에 따라 많은 양의 메모리를 필요로 한다최적의 상황(충분한 메모리/정렬된 원소)에서는 O(N log N)의 성능을 보여준다그렇지 못한 경우에는 O( N ( log N )2 )의 성능을 보여준다일반적인 경우 sort가 더 빠르다정렬후 동일값의 원소 순서를 보장 해준다 sort와 stable_sort를 벤치마크한 결과를 보더라도 sort가 더 빠르다는 것을 알수 있습니다. 그렇다면 stable_sort는 언제 쓰는걸까요? sort와 stable_sort의 큰 차이점은 바로 같.. 공감수 0 댓글수 0 2014. 12. 25.
  • C# ASP.NET MVC4 핫링크 방지 ( Hotlink Protection ) 웹서버 구축시 골치 거리중 하나가 바로 핫링크(Hotlink) 입니다. 이미지나 동영상 같은 미디어 파일의 링크를 따서 외부 사이트에 걸어놓는 거죠. 이로인해 엄청난 양의 불필요한 트래픽이 발생할 수 있습니다. MVC4에서는 web.config 수정을 통해 이를 방지 할수 있습니다. 방법은 간단합니다. web.config 파일에 아래의 rule을 추가해주면, 해당 url에서 오는 요청이 아닌 것들은 rewrite에 지정된 이미지로 교체 해서 전송됩니다. 이 이미지는 저용량의 불펌금지!!! 같은 이미지로 설정해두면 좋겠죠. // mydomain에서 오는 요청이 아닌 것은 noimage.jpg로 전송 공감수 0 댓글수 1 2014. 6. 15.
  • C# Mock을 이용한 테스트 환경 조성 아래와 같이 DB에서 학생의 성적들을 얻어와 점수의 평균을 구하여 출력하는 로직이 있습니다. // 학생 성적 모델 public class StudentResult { int MathResult; int EnglishResult; int ScienceResult; } // 학생 성적 DB 컨텍스트 public class StudentDBContext : DbContext { public DbSet StudentResultTable { get; set; } } // DB에서 학생들의 성적을 얻어와 평균을 구합니다. public class School { public float GetStudentAvr() { var cont = new StudentDBContext(); int studentCount = co.. 공감수 0 댓글수 2 2014. 5. 18.
  • [KGC13] 쿠킹스타 제작 사례로 보는 cocos2d-x 소개 KGC13에서 발표했던 쿠킹스타 제작 사례로 보는 cocos2d-x 소개 자료입니다. 한참 지난건데 게데포에는 안올려뒀더군요 ㅋ 뒷북이지만 살포시 올려둡니다. Introduce coco2dx with cookingstar from ozlael ozlael 공감수 0 댓글수 0 2014. 3. 5.
  • cocos2d-x 3.0 beta의 확장 라이브러리 사용 설정 : win32, android cocos2d-x는 다양한 확장 기능들을 포함하고 있습니다. http통신을 편하게 사용할 수 있는 httprequest, 에니메이션 및 UI를 효율적으로 편집하고 사용할 수 있는 cocostudio, 앵그리버드로 유명한 2D 물리 라이브러리인 BOX2D 등 그 종류도 다양합니다. 하지만 project-creator로 프로젝트를 생성하면 기본적으로는 이러한 확장 기능들에 대한 설정이 되어 있지가 않습니다. 아무리 코드에서만 기능들을 사용해도 라이브러리 및 헤더 파일 관련 설정이 되어 있지 않으면 컴파일 단계에서 오류가 나게 마련이죠이 글에서는 이러한 기능들을 사용하기 위한 win23 및 android 프로젝트에서의 설정을 다루고자합니다. iOS는 다음 기회에;;이하부턴 음슴체를 사용토록 하겠습니다. 모바일.. 공감수 0 댓글수 0 2014. 2. 4.
  • cocos2d-x 3.0 beta의 개발 환경 설치 및 빌드 : win32, android 이 글은 2014년 1월 V3.0 beta0 기준으로 작성되어 있습니다. cocos2d-x는 나날이 버젼이 바뀌고있으며 그에 따른 변화도 만만치 않습니다. 따라서 이 글의 내용이 언제까지 유효할 지 보장하지 못합니다. 미래에서 오신분이라면 이 점 감안하시고 봐주시길 바랍니다.작년 말 cocos2d-x Ver.3이 공개되었고 업데이트가 거듭되면서 얼마 전 beta0가 릴리즈되었습니다. 버젼 메이져 넘버가 바뀐 만큼 Ver.2.x와는 코드 및 기능 상 많은 차이점들이 존재합니다. 뿐만 아니라 빌드 환경도 많이 바뀌었습니다. 물론 아직 beta인만큼 본격적으로 상용 프로젝트에 사용하기에는 무리가 있을 것입니다. 하지만 매력적인 기능이 많아 슬슬 살펴보기 시작하긴 해야겠습니다. 물론 cocos2d-x를 입문하시.. 공감수 0 댓글수 7 2014. 1. 20.
  • 유니티 라이팅이 안이뻐요. 딱딱하고 입체감이 없어요. 어떻게해야하나요? 저는 COCOS 2D-X로 개발을 하고 있습니다만, 유니티는 교양(?)으로 알아두어야 할 것 같아서 만지작거려볼까 하는 중입니다. 그래서 유니티 포럼이나 웹을 돌아다니다보니 라이팅에 관한 질문이 가끔 보이더군요.유니티의 라이팅이 안이뻐요.유니티의 라이팅이 딱딱해요.유니티의 라이팅이 입체감이 없어요. 이번 포스팅에서는 이에 대한 이야기를 해볼까 합니다. 사실 이 주제가 유니티에만 국한되어 하는 이야기는 아닙니다. (제목 낚시 ㅈㅅ) CG 특히 게임같은 실시간렌더링(real-time rendering)은 은 자연 그대로의 빛을 표현하는 것을 불가능하기때문에 어느정도 간략화하여 묘사하는 알고리즘을 쓰고 있고, 많은 엔진들이 제공하는 기법들은 비슷비슷합니다. 동네 표준이란게 있어서;; 그렇기때문에 본 포스팅에서.. 공감수 1 댓글수 9 2013. 12. 23.
  • 프로그래머가 수학을 못하면 포프TV 시작하면서 첫 비디오로 올렸던 건데.. 게임데브 포에버에는 포프TV를 한 번도 공유한적이 없어서 올립니다. 요새는 시간좀 아끼려고 blog를 대신 주로 비디오(vlog)를 만드는데... 이게 gamedevforver에 올릴만한 성격인지 아닌지 판단이 잘 안서서 여태까지 여기엔 공유를 안했습니다. 앞으로도 어떨지는 잘 모르겠구요... 고로 제 비디오가 맘에 드시면 비디오 오른쪽 위에 있는 아이콘 누르셔서 구독해두세요. 그럼 새 비디오가 올라올때마다(매주 2개) 유튜브에서 보실수 있을겁니다. "프로그래머가 되고 싶은데 수학을 못해요"라는 질문에 대한 답... 제가 수학성적을 60점에서 100점으로 올린방법은 아래 링크에 있습니다. http://kblog.popekim.com/2012/05/60-10.. 공감수 0 댓글수 6 2013. 12. 11.
  • 복셀 에디팅 팁 다신 안볼줄 알았는데.... -_- 요즘들어 다시 복셀(voxel) 에디팅에 대해 잠시 본 바.... 이 기회에 제가 이짓하면서 배운 교훈들을 짧게(정말?) 공유해볼까 합니다. 저번에 썼던 "혼합가능한 RGBM" 글 과는 달리 여기에 나열한 모든 정보/fact 들은 이미 온라인에 다 널려있는 내용입니다. 그냥 그 모든 내용들을 모아 제 의견을 약간 곁들인게 전부입니다. 1. isosurface부터 이해하세요복셀 데이터를 주무르는 가장 실용적인 방법은 각 복셀마다 iso 값을 대입하는 겁니다. 다른 방법도 시도해봤는데요(물론 제가 발명해낸 기괴한 방법도 한번 시도해봤죠 -_-) 대부분 별로더라구요. 단점들이 있어요. 결국엔 iso 값으로부터 메쉬를 다시 생성해내는게 가장 실용적이고 메모리 친화적인 방법인거.. 공감수 0 댓글수 0 2013. 12. 7.
  • 알파혼합 가능한 RGBM RGBM이란?fat 버퍼(채널당 16비트)를 써서 HDR 렌더타겟을 저장하는게 가장 직관적인 방법입니다. 하지만 이러기엔 속도가 너무 느렸고 메모리도 많이 잡아먹었죠. 그래서 보통 HDR을 8비트/채널 버퍼에 인코딩(패킹)하곤 했었습니다. 다양한 패킹 방법들이 존재하는데 아마 그중에서 가장 널리 사용했던건 RGBM 이었을겁니다. (이 링크에는 LogLUV 패킹 방법에 대해서도 잘 나와있으니 잘 모르시는 분은 읽어보세요...무.. 물론 영어 -_-) 패킹이라... 음.. 좋은 놈이지요... bandwidth하고 메모리 둘다 절약해 줬거든요... RGBM의 단점근데 문제가 있었습니다.. 아티스트분들이 엄청 좋아하는거 하나를 할 수 없거든요.. 넵. .알파 블렌딩 입니다.. -_- RGBM버퍼를 사용하면 알파.. 공감수 0 댓글수 0 2013. 11. 29.
  • VC++ 최적화된 코드 디버깅 하기 사실 게임프로그래머들 중에 release 빌드, 즉 최적화된 코드, 에서 디버깅하는 사람들이 많습니다. 이유는 뭐.. 당연히 debug빌드가 졸라 느린 경우가 있기 때문이지요. 근데 그럴때마다 watch 창에서 로컬변수들 보면 다 깨져나왔죠? ???? 로 나오거나 아니면 아예 잘못된 넘으로 나오던가요. 이걸 해결하려고 디스어셈블리보면서 register에 들어있는 메모리주소를 watch 창에서 casting해서 보는 경우도 있지요. 근데 디스어셈블리 보는게 꽤 귀찮은 짓인건 맞아요.. 근데 이게 Visual C++ 2012부터 지원해주더라구요. 사실 공식적인 지원은 아닙니다. 그냥 내부적으로 마이크로소프트사에서 만들어서 다른 용도로 쓰고 있던 걸 누가 찾아낸 것 뿐이거든요. 공식적으로 문서화 되어있는 스위.. 공감수 0 댓글수 1 2013. 11. 26.
  • [KGC2013] 컴오히의2의 겨울 렌더링 기법 제 전 동료 다니엘이 KGC 2013에서 강연했던 컴오히2의 겨울 렌더링 테크 발표입니다. 다니엘의 부탁으로 제 블로그에 따로 올립니다.. Company of Heroes 2 (COH2) Rendering Technology: The cold facts of recreating the hardest winter conditions of World War 2 from Daniel Barrero 공감수 0 댓글수 0 2013. 10. 23.
  • [KGC2013] 아티스트에게 사랑받는 3DS Max 우버 셰이더 약속 드린대로 올해 강연했던 pt자료 공유합니다. 강연장이 가득 차서 뒤에 서계신분들도 많았고 아티스트/프로그래머 비율이 반반이라 꽤 즐거웠던 강연이었습니다. ^_^ 아티스트에게 사랑받는 3DS Max 우버쉐이더 from 포프 김 공감수 0 댓글수 1 2013. 10. 16.
  • [KGC2013] 모바일 3D 엔진 개발기 오랜만에 글이라는 것을 올려보는군요. ㅎㅎ;;;궁금하시지는 않겠지만, 오랜만이니 근황이라도 살짝 이야기 하자면 최근에는 잠시 고급 렌더링 기술에 대한 작업을 잠시 미루어 두고, 생존을 위한 (모바일) 게임을 열심히 개발하면서 "기획, 디렉팅"과 같은 다양한 분야에 도전하고 있습니다. 차라리 프로그래밍이 젤 쉽군요. ㅜㅜ;;오늘은 지난 KGC2013에서 발표했던 내용을 공유드릴까 합니다. 3일차 오전 첫 시간이라 많이 안오실 것이라고 생각했는데, 그래도 찾아주신 분들이 꽤 되셔서 감사하기도 하고 그랬습니다. 이 내용은 제가 모바일을 대상으로 엔진 개발 및 게임을 만들면서 겪었던 문제들을 해결하면서 느낀 점들을 적은 내용입니다. 공감하실 수도 있고 아닐 수도 있지만, 나름대로는 "모바일 게임"을 개발한다면 .. 공감수 0 댓글수 3 2013. 10. 14.
  • C++ Coroutine Coroutine이란?프로그램이 실행될때 불려지도록 만들어진 프로그램의 중심이 되는 일련의 코드들을 Main Routine(메인 루틴) 이라고 하며, Main Routine외에 다른 Routine들을 모두 Subroutine(서브루틴) 이라고 합니다. 그리고 진입하는 지점을 여러 개 가질 수 있는 Subroutine을 Coroutine(코루틴) 이라고 합니다. Coroutine은 호출한 Routine을 대등한 관계로 호출할 수 있기 때문에 다른 Routine의 종속관계가 아니라고 표현하기도 합니다.C++에서는 main함수가 Main Routine이고 그 외에 다른 함수들은 모두 Subroutine이라고 볼 수 있습니다. 따라서 Coroutine은 함수 내에서 호출한 쪽을 다시 호출할 수 있고 다시 다른 .. 공감수 4 댓글수 10 2013. 7. 26.
  • 다시 한번 C++에서도 coroutine C++에서도 coroutine & yield 를 쓴지 벌써 1년이 지났습니다. 그리고 지난 1년간 C++에도 많은 일이 있었습니다.그 중 제가 주목한 한가지는 바로 C++ 표준에 드디어 coroutine이 들어갈 수 있는 가능성이 열렸다는 것입니다!바로 boost 1.53 버전에 coroutine이 정식으로 포함된 것인데요.오늘은 이 boost 1.53 버전에 포함된 coroutine에 대한 소개를 해보려고 합니다. 소개를 시작하기에 앞서 한가지 알려드리자면..이 글을 쓰고 있는 2013년 7월 16일 현재 boost는 1.54버전까지 릴리즈 되었습니다.하지만 불행하게도 boost 1.54버전에는 coroutine에 문제가 있어 coroutine을 사용할 수 없습니다.(http://boost.228332.. 공감수 0 댓글수 4 2013. 7. 16.
  • 맵 파일을 이용한 충돌 위치 찾기 ( Finding crash point using the MAP file ) 디버깅을 하다보면 참 난감한 상황에 빠질때가 많습니다. 프로그램이 실행 도중 크래시가 났을 경우 덤프와 심볼 파일이 있다면, 크래시가 발생한 위치와 원인을 손쉽게 찾아낼 수가 있지만, 그렇지 않다면 막막할 뿐입니다. 하지만 절망 하기에는 이릅니다. 크래시가 발생한 주소라도 있다면, 아직 희망의 끈이 있습니다. MAP 파일을 이용하면 크래시가 발생한 위치를 대략적으로 찾아낼 수 있기 때문이죠. 프로젝트 옵션에서 MAP 파일 관련 옵션은 기본적으로 비활성화 되어있습니다. 먼저 이 옵션을 아래와 같이 활성화 해주어야 MAP 파일이 생성됩니다. 이와 같이 설정후 빌드하면 MAP 파일이 생성되는데 심볼 파일과 함께 항상 잘 보관해두도록 합시다. 이제 이를 가지고 크래시 위치를 찾아내는 방법을 살펴보겠습니다. 먼저.. 공감수 0 댓글수 6 2013. 7. 12.
  • 밉맵 디테일 높이기 벌써 5년넘게 써오고 있는 방법인데 생각보다 모르시는 분들이 많은 것 같아 이방법을 공유합니다. 밉맵? 일단 밉맵이 뭔지는 다 아시리라 생각하고 굳이 밉맵에 대해서는 설명하지 않겠습니다. 모르시는 분들은 여길 참고하세요. 문제점 및 일반적인 해결책 밉맵을 사용하다보면 정말 카메라를 가까이 들이밀지 않는한 텍스처의 디테일이 흐릿해 보이는 경우가 흔히 발생합니다. 보통 다음과 같은 방법들로 해결합니다. 흔히 쓰는 해결법 1 - 텍스처 크기 늘리기 밉레벨이 낮아질수록 텍스처 크기가 절반씩 줄어드는 거니 젤 높은 디테일의 밉멥 텍스처크기를 크게 키워주면 그만큼 흐려지는 현상이 덜합니다. 하지만 메모리를 많이 잡아먹는다는 단점이 있어서 정 필요한 때만 제한적으로 사용하곤 합니다. (왜 흔히 라고 한거지 그럼 -_.. 공감수 1 댓글수 4 2013. 6. 12.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.