예전 자유 게시판

opengl 게임프로그래밍 책 질문여

김희수 2011-03-31 03:03

opengl game programming 책을 보고 있다 갑자기 md2모델이 아닌 다른 특정 모델파일, 예를들어 3d맥스로 확장자가 *.map 로 된 맵파일이나 모델파일을 만들었다치면 opengl로 이 모델파일을 읽어올수 있는 방법을 알고 싶습니다(다른 파일 포멧 로딩 방법여, opengl로 코딩하면서  모델파일을  불러보고 싶습니다)

저는 개인적으로 언리얼 토너먼트에 나오는 맵파일과 모델파일을 읽어서 출력하는것도 해보고 싶구여.. ㅎㅎ

그리고 다른 예제는 다 실행을 해봤는데 이상하게 opengl gameprogramming 18장 md2파일 로딩하는소스만 제가 다 코딩하여 실행을 하면 않돼네여.. ㅠ.ㅠ

예외가 생겨서 이거 참..(진짜 예외 만큼은 정말 싫어용.. ㅠ.ㅠ)

texture_t *LoadPCXTexture(char *filename) 에서

for (j = 0; j < thisTexture->height; j++)
        {
                for (i = 0; i < thisTexture->width; i++)
                {
여기 첫번째 부분에서 예외가 남니다 -> unscaledData[4*(j*thisTexture->width+i)+0] = (unsigned char)thisTexture->palette[3*thisTexture->data[j*thisTexture->width+i]+0];
                           unscaledData[4*(j*thisTexture->width+i)+1] = (unsigned char)thisTexture->palette[3*thisTexture->data[j*thisTexture->width+i]+1];
                           unscaledData[4*(j*thisTexture->width+i)+2] = (unsigned char)thisTexture->palette[3*thisTexture->data[j*thisTexture->width+i]+2];
                           unscaledData[4*(j*thisTexture->width+i)+3] = (unsigned char)255;
                }
        }

lesson1.exe의 0x004015f9에 처리되지 않은 예외가 있습니다. 0xC0000005: 0x003d7000 위치를 읽는 동안 액세스 위반이 발생했습니다.

해결방법좀 부탁여 vs2005 사용임다


류광 2011-03-31 17:03


글쎄요 그 앞의 malloc에서 unscaledData가 제대로 할당 되었는지, 또 thisTexture의 palette와 data도 제대로 할당이 되었는지 점검하는 등 일반적인 메모리 관련 디버깅 기법들을 동원하셔야 할 듯 합니다... 너무 어렵다면, DevIL 같은 이미지 라이브러리를 사용하는 것도 한 방법이고요.

그나저나 그 책 너무 오래되었습니다.... 일반적인 게임 프로그래밍 관련 부분만 보시고(그러나 void main 등 일반 프로그래밍 부분도 시대에 뒤쳐지거나 허술한 부분이 있습니다), OpenGL은 좀 더 최근 책으로 공부하시길!