본문 바로가기

전체 글

(84)
메모리 누수 탐지(_CrtDumpMemoryLeaks) VS에서 메모리 누수를 탐지하기 위해서는 _CrtDumpMemoryLeaks()함수를 사용해 주면 된다. 이 함수는 메모리 릭이 의심되는 함수가 실행된 다음에 사용해 주면 되는데 보통 프로그램 마지막에 메모리를 검사하는데 사용하기도 한다. _CrtDumpMemoryLeaks() 함수는 이 함수가 실행되는 그 시점을 기준으로 할당된 메모리가 해제되었는지 아닌지를 검사하기 때문이다. 그렇기 때문에 함수 안에서 할당하고 바로 다음에 검사하면 메모리 릭이 있다고 보고 한다. 이러한 이유로 보통 프로그램 마지막에 사용하는 경우가 많다. 1. [ 코드 ] 2. void Func() 3. { 4. int *p1 = (int*)malloc(4); 5. int *p2 = new int; 6. _CrtDumpMemoryL..
[Ogre] GUI 추가시 마우스 갇히는 현상 Ogre 에서 제공하는 ExampleFrameListener 와 ExampleApplication 객체를 상속받지 않고 GUI를 추가할때 생기는 문제중, 마우스가 특정영역에 갇히는 경우가 있습니다. ogre 어플리케이션위자드로 생성하거나, 기존의 example 코드를 상속받아서 할때는 잘되지만, 상속받지 않을때는 안되는 이유는 ExampleFrameListener 의 한 부분을 보면 알수 있었습니다. //Adjust mouse clipping area virtual void windowResized(RenderWindow* rw) { unsigned int width, height, depth; int left, top; rw->getMetrics(width, height, depth, left, top..
[Ogre] 랜더윈도우 수동으로 생성시 주의사항 Ogre 에서 createRenderWindow() 함수에서 렌더윈도우를 생성하는 방법은 자동으로 생성과, 사용자가 지정해주는 수동 방식 두가지가 존재한다. 먼저 자동을 하기위해서는 " createRenderWinodw() 함수내에 mRoot->initialise(true, "윈도우 타이틀명") " 으로 해주면 별다른 문제가 발생하지 않는다. void createRenderWindow() { mRoot->initialise(true, "윈도우 타이틀명"); } 하지만 수동으로 지정해줬을때는 NULL 포인터참조로 프로그램이 죽는현상을 볼수 있다.(Ogre 공식 튜토리얼 6번을 보고 따라하다가, 수동으로 지정해줬을때 라면 말이다.) 우선 수동으로 렌더윈도우를 지정해주는 부분은 아래와 같다. 물론 여기에서는 ..
MFC프로그램 종료시 유의할점. 흔히 윈도우 프로그램을 하면서 보게되는 책이 API관련 책들이나, MFC관련책들을 접하게 될것이고, 프로그램을 하게 될것입니다. 흔히 생각할때 대부분의 기초적인 윈도우 프로그램의 예제에서는 PostQuitMessage를 이용하여 프로그램을 종료하는 경우가 많고, 나또한 이것이 프로그램을 종료하는 방법중 하나일것이라 생각하고 사용해 왔습니다. 하지만 이것은 이번에 학과 과제로 만드는 프로그램에서 메모리릭을 발생시키는 주된 원이이었고.. 이 문제를 해결하기위해 자료를 검색하던중 PostQuitMessage의 문제점과 다른 종료방법에 대해서도 알수 있었습니다. 아래는 참고한 자료중 프로그램을 종료하는 방법들을 나열한 것입니다.(출처: http://devkyy.tistory.com/203) * Terminate..
error C3859: PCH에 대한 가상 메모리 범위를 초과했습니다. Visual C++ 컴파일러 옵션 /Zm(메모리 할당 제한 지정) 미리 컴파일된 헤더에 대한 컴파일러의 메모리 할당 제한을 지정합니다. /Zmnumber 인수 number 미리 컴파일된 헤더의 메모리 할당 제한을 결정하는 배율 인수입니다. 설명 number 인수는 배율 인수입니다. 기본값은 100이며, 이는 50MB의 메모리 할당을 지정합니다. 최대값은 2000입니다. 다음 표에서는 number가 메모리 할당을 어떻게 수정하는지 보여 줍니다. 값 메모리 할당 10 5.0MB 100 50MB 200 100MB 1000 500MB 2000 1000MB 이전 버전의 Visual C++에서는 컴파일러가 각각 일정한 제한이 있는 여러 개의 개별 힙을 사용했습니다. 지금은 컴파일러가 필요에 따라 동적으로 힙의 크기..
OGRE 2D 이미지 관련 자료들. http://www.ogre3d.org/wiki/index.php/Displaying_2D_Backgrounds 오버레이를 이용한 2D 배경이미지 띄우는 방법 http://www.ogre3d.org/wiki/index.php/BetaGUI 오버레이를 이용한 GUI의 구현 예제 http://www.ogre3d.org/wiki/index.php/RTS_Sample_App RTS 미니맵 샘플예제 http://cafe.naver.com/ogre3d.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1189 ogre3d 카페 자료
OGRE에 노말맵핑 적용하는 방법 오우거(OGRE)엔진에서 노말맵핑을 적용하기 위해 한동안 많은 고생을 했다. 현재까지 나온 OGRE엔진의 SDK 버전은.. 1.63버전.. 내가 가진 SDK는 1.6.2.3 인데 크게 차이는 없을거라 본다. 버전업이 되면서 기능면에서 추가 및 변경되는것들이 있는데, 내가 알아본 바로는 노말맵핑에 관련된 것에 관한것은 변경된것이 없는듯 하다. 오우거를 공부하면서 많은 사이트를 참고하고 자료들을 모았었다. 그중에 가장 많은 도움이 되는곳이 '용수의 웹노트' 라고 하는곳과 '네이버 OGRE3D 카페' 그리고 '한국산업기술대학교 이대현교수의 오우거강좌 자료들' 이다. 노말맵핑에 관련된 자료는 셰이더 파트인데, 이 부분에 대한 자료가 구하기가 힘든 관계로 2008년 이대현교수의 강좌에 보면 셰이더 파트가 있었다...
error C2065: 'i' : 선언되지 않은 식별자입니다. C는 문법적으로 for문 내에서 i와 같은 변수를 사용해서 쓸수 없고 미리 선언해야 한다. "for(int i=0; i