Loading...

부게게 스터디 발표. - 빛 기초.

2년만에 시작된 아카데미 동기 스터디.. 이번에 내가 발표한건 기본적인 빛의 원리 정도. 3d 관련 책을 보면 가장 앞에나올 정도로 기본적인 내용이지만 이번에 이 발표를 준비하면서 많이 배울 수 있었다. 다음 스터디 발표로 어떤걸 준비해 볼까...흐음...

발표준비 - 라이팅

Lighting... 왜 중요한가? 광원(Light Source) : 사람이 물체를 볼수 있는 이유는? 고딩때 배웠던 이야기들.. 광자들이 물체의 표면에서 반사되거나 또는 물체 표면에서 방출되어 관측자의 눈으로 들어온다. 이러한 광자들은 다른물체들로 부터 올 수도 있고 광원으로부터 올 수 도 있다. - 방향광(directional light), 점광(point light), 집중조명광(spot light) 이미지 출처 : http://channel9.msdn.com/coding4fun/articles/Beginning-Game-Development-Part-VI-Lights-Materials-and-Terrain 이론 링크 : http://ivis.cwnu.ac.kr/~dgpark/note/java3d/..

AddRef() func

shader 파일을 분석해서 declaration을 자동으로 생성하는 부분을 이번에 새로 추가했다. 만드는건 그닥 오래걸리지 않았는데 문제는 늘 debug로 켜고 끄다보니 정상종료 한 적이 거의 없어서 몰랐는데 정상종료를 했더니 요상한 에러가 떳다. "The D3D device has a non-zero reference count, meaning some objects were not released." 어딘가에서 device release 횟수가 잘못된듯 싶은데.... 문제는 너무 많은게 추가되서 찾기가 쉽지 않다는..ㅜㅜ.. 결국 1시간 삽질후에 찾은 문제가 되는 녀석... LPDIRECT3DVERTEXDECLARATION9 pkDecl = NULL; device->CreateVertexDeclar..

하루를 잡아먹은 export unit error.

이번에 사용하고 있는 max는 2011 버전. max 기능이랑 이것저것좀 같이 export하고싶어서 기존 소스를 들고와서 작업을 좀 하고 있었다. 이번에 붙이는 core쪽은 unicode only라서 maxexport도 문자집합에서 "설정안함"에서 "유니코드 문자 집합 사용"으로 바꾸어 주었다. 그랬더니 바로 뜨는 두개의 에러문구..... 1>MgExport.obj : error LNK2001: "public: virtual wchar_t * __thiscall ClassDesc::GetRsrcString(int)" (?GetRsrcString@ClassDesc@@UAEPA_WH@Z) 외부 기호를 확인할 수 없습니다. 1>MgExport.obj : error LNK2001: "public: virtual..

dx 9 project

dx10 공부를 살짝 해봤지만 굳이 시간을 투자해 가면서 dx10 까지 만들 필요가 있을까... 이전 엔진 버전에서는 만들었지만 시간이 너무 많이 투자되는듯... 이번에는 dx9을 위주로 만들고 필요하다면 dx10버전은 천천히 만들거나 dx11을 지원하는 카드를 꼽아서 dx11을 만들어야지 ㅎㅎㅎㅎ. Explicit 링킹을 사용. 이 방식은 단순하게 dll을 이용하여 로드할 수 있는 방법. 1. HINSTANCE LoadLibrary(LPCTSTR lpLibFileName) - 원하는 라이브러리를 로드한다. 인자에는 원하는 dll명을 써주면 된다. LoadLibrary( "MgX9.dll" ) 이런 식으로 해 주면 HINSTANCE를 반환 해 준다. 여기서 반환된 HINSTANCE는 파일의 핸들을 의미한..

warning C4275:

warning C4275: DLL 인터페이스가 아닌 class 'X1'이(가) DLL 인터페이스 class 'X3'의 기본으로 사용되었습니다. dll export 클래스인 X1을 dll export 클래스인 X2에서 상속받았는데 이런 warning이 난다. 왜 그럴까. 아무리 고쳐봐도 잘 안없어 진다..ㅜㅜ. 예전에도 이런 문제때문에 꽤 고생했던것 같은데 그 떄 왜 기록을 남겨두지 않았을까.ㅜㅜ.

min, max의 값.

여태까지는 min, max값을 최초 이런 식으로 사용했었다. min, max = vec[0]; while { min > vec[i] then min = vec[i]; max < vec[i] then max = vec[i]; } 요렇게 해도 아무런 문제가 없었으니까.. 하지만 이번에 작업하면서 어이없는 버그가 나타났다. 바로 초기화 버그. 데이터가 없는 상태에서 min, max는 초기화가 되어있지 않은상태, 비교하려하니 gg. 그래서 구조체나 클래스에 min, max를 가진다면 vMin.x = 1e33f; vMin.y = 1e33f; vMin.z = 1e33f; vMax.x = -1e33f; vMax.y = -1e33f; vMax.z = -1e33f; 이런식으로 초기화 해 주는게 정신 건강에 좋은듯.. 생..