본문 바로가기

프로그래밍

마우스의 움직임을 원하는데로 바꿔봤다. 4번 진행상황중, 마우스의 움직임이 너무 맘에 안들었다. 해골책에서 제공해주는 방법에는 무조건 마우스 정가운데만 커서가 이동하게끔하여 연산했는데 이것은 다른 인터페이스를 사용하는데 조금 치명적이면서 불편했다. 그래서 http://codesampler.com/ 에서 봤었던 소스를 참고하여(이건 윈도프로시져에서 가지고 놀지만..) 해보았고 이제 맘에든다. codesampler은 참 좋은 예제소스로 많이 도와주는것같다. VOID CGameApp::ProcessMouse() { static POINT OldMousePos; POINT CurrentMousePos; FLOAT fDelta = 0.001f; //마우스의 민감도 static BOOL bMousing = FALSE; //마우스클릭시의 움직임 if(Ge.. 더보기
4. FPS적용 및 지형생성 1. 스카이돔을 내부 중심을 기준으로 y축으로 살짝위에 지형생성 1) 직접 만들지못해서 안타깝지만, 지형은 용책에 제공되는 클래스를 이용하였다. 2) 해골책에서의 지형처리에대한 광범위에 있어서 내부적인 부분적인 이해만 하였다. 2. 스카이돔은 시간당 계속 y축으로 회전한다. 1) 이부분에 있어서 원래 내가 주로쓰던 메쉬클래스에 값만 살짝변경해주면 된다. 더보기
스카이돔 괜찮은 모델링 bing.com 여기 검색이 그렇게 좋다길래 검색했다. http://code.google.com/p/los-lib/source/browse/trunk/los-prj/Bin/SceneRoaming/Other/skybox.x?r=18 이곳에서 얻은자료이며, 모델링과 더불어 텍스쳐까지 쉽게 겟할 수 있었다. 제일 좋았던점은... 내가 직접 맥스로 만든 모델링은 정말 참..볼품없었는데.. 이것은 스카이박스가 아닌 스카이돔형식으로 큼직하게해놔서 스케일도 없이 그대로 연출하면 될듯하다. 추가작업으로 스카이돔밖을 못나가도록 스카이돔은 카메라를 따라다니도록하였다. 더보기
3. 스카이박스, 카메라 스카이박스 : 전에 스카이박스는 그냥 인덱스버퍼에 텍스쳐를 씌운형식을 취했었다. 버텍스버퍼돌리고 인덱스버퍼돌리는 이런방법은 d3d관련 처음할때나 지금이나 왜이리 귀찮은지... 그래서 그냥 맥스에서 정육면체만들고 텍스쳐씌운 X파일을 월드에 띄웠다. 근데 왜일까? 둘의 차이점이 무엇인지는 모르겠으나, 육면체 모서리의 라인이 너무선명하다. 맥스상의 작업이 어느정도 부정확한 것도없지않아있지만........ 카메라 : 해골책에서 제공하는 카메라클래스를 적용하였다. 아주 쉽게 설명이되고 쓰임이 괜찮기에 넣었다. 내가 직접하려했으나, 생각보다 시간이 많이 걸릴것같고 더군다나 매우 어지럽더라. 급하게 만들어서 그런지 화면이 매우어둡길래.. 텍스쳐링,필터링 이런거 하니까 화면에 깔끔하니 잘나온다. 텍스쳐링 필터링은 렌더.. 더보기
SetSamplerState 텍스쳐는 스크린 좌표에서 삼각형에 입혀 진다. 일반적으로 텍스쳐 삼각형과 스크린 삼각형의 크기는 서로 다른 경우가 많으며 이 때 텍스쳐 삼각형이 스크린 삼각형보다 작은 경우 텍스쳐 삼각형을 확대하여 크기를 맞추고, 텍스쳐 삼각형이 더 큰경우에는 텍스쳐 삼각형을 축소한다. 이 두가지 경우 모두 얼마간의 왜곡이 발생하는데, 필터링을 통해 이러한 왜곡현상을 줄이고, 부드럽게 이미지를 만들어 내기 위해 SetSamplerState를 이용 할 수 있다. ex ) SetSamplerState(0, // 0 번 텍스쳐 스테이지 D3DSAMP_MAGFILTER, // 확대 필터 사용 D3DTEXF_LINEAR // 선형 필터링 사용 ) ARG1의 텍스쳐 스테이지는 0번 부터 7번까지 총 8개 이용이 가능하다. 필터링 .. 더보기
2. 차후 일정 나름 세부 정리 일단 뼈대를 잡았으니까 차후할일을 정리를 하자면.. 1. 간단하게 범위를 볼 수 있는 단순한 카메라 - 카메라클래스는 차후에 제작 일단 뭔가를 띄워놓은후에 볼 수 있게끔 2. 메쉬클래스, 빌보드클래스, 스프라이트클래스, 폰트클래스를 가져와서 적용 - 졸업작품개발시에 만들었던 메쉬,빌보드,스프라이트,폰트 클래스를 적용시킨다. 3. 지형클래스 공부 정리 적용 4. 카메라처리클래스 적용 5. 스킨드메쉬 클래스 적용 - 이부분을 상세히 알고싶으나 이단계까지 빠르게 진입한다면 한번 봐줄필요가 있다. 1 ~ 5 가 끝났다면 위의 구현을 토대로 졸업작품때 작성했던 코드를 정리해서 그대로 이식하면 되겠다. 6. 기능이 아닌 구현부분 관련 클래스를 가져와서 적용한다. 더보기
1. 프레임워크 제작 공부를 하면서 수 많은 프레임워크들을 보았고 내가 만든것 또한 그것들과 유사하게 닮았다. 뭐 어쨋든 모든것들이 winmain에 시작해서 돌고돌아 노는것아닌가? 내가 만든 프레임워크 또한 아주 간단하지만 확실한건 이제 뭔가에 의지한다는 느낌을 조금이나마 없앨 수 있겠지. 현 기능 : 윈도우생성, D3D기본화면, 콘솔출력창 제작시 문제가 생겨 보완하였던 점 1. D3D전체화면 구동시 알트탭(디바이스소실)이 발생후, 다시 화면 복구가능하게끔 하였다. 2. 클래스내에 윈도우 프로시저 문제는 클래스내에 프로시저를 static로 선언, CreateWindow함수의 맨 뒷부분 this 로 변환 및 등등 .. 자세한 사항은 블로그내에 공부관련카테고리에 설명이 나와있음 참... 구조도 어떻게 그려야하는지 모르겠다. Ma.. 더보기
새 프로젝트 - 포트폴리오 만들기 목적 : 1. 확실한 포트폴리오 제작을 함과 더불어 D3D와 C++의 반복숙달 및 관련기법의 더 깊은 이해를 위해서 2. 졸업작품을 포트폴리오로 내세운다는것은 사용자입장보다 개발자입장에서 너무 부족한점이 많았다. 1) 애초 무지의 상태에서 시작해서 작품을 완성하는 단계까지 완성은 가능하였으나, 객체지향적으로 살짝 아쉬움 2) 퍼오거나 발췌한 기능적클래스를 제외한다하여도 GameInstitute의 프레임워크에 따른다는점이 불쾌하다. ex) CPlayer, CCamera, CTerrain, CObject 등등 이것들이 꼭 서로 붙어다녀야한다는 것자체가 너무 아쉬웠 고, 내가 지형만 바꾸고자하면 카메라를 손봐야하고 카메라를 손보면 여타 다른모든것들을 수정해야한다. 3) 개인의 만족과 취업을 목적으로 함에 있기.. 더보기
윈도우 프로시져를 클래스 멤버함수로 만들기 어떤 프로세스에 윈도우 프로시져를 여러개 만들어야 할 때가 있다. (예를 들어, DLL로 기존 프로세스에 빌붙을 경우라든가) 그리고 그 특정 윈도우에 외부에서 어떤 명령을 보낼 경우에 해당 윈도우 프로시져를 사용할 경우가 있다. 하지만 일반적으로 윈도우 프로시져는 static 이어야 하기 때문에 어떤 클래스의 멤버함수로 두면 에러가 뻑 난다. 안되는 이유는 클래스의 멤버함수들은 보이지 않게 매개변수를 하나 더 추가적으로 전달받게 되는데, 바로 그 매개변수가 this 포인터이다. 하지만 윈도우 프로시져 원형이 LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); 이렇게 되기 때문에 this 포인터가 눈에 안보이게 선언됨으.. 더보기
STRICT 와 WIN32_LEAN_AND_MEAN 의 정의 #define WIN32_LEAN_AND_MEAN 컴파일 속도를 위한 조건 컴파일 매크. 이것이 정의되어 있으면 windows.h에서 조건 컴파일로 commdlg.h파일 외에 여러가지 헤더 파일을 인클루드 안하게 되어 있다. 인클루드 파일이 적으면 적을수록 컴파일 속도가 빨라지기 때문이다. #define STRICT 윈도우즈에서 컴파일러가 타입 체킹을 강화하기 위해서 사용하는 매크로. 이것이 정의되어 있으면 데이터유형이 올바른지 보다 더 엄격하게 조사하게 된다. 예를들어 인자로 HPEN 이 들어가야 하는데,HBITMAP이 들어간다든지 하는 경우에 에러가 발생하는것을 미리 알려주기 위함이다. 그냥 에러를 미연에 방지하기 위한 방어책이라고 생각하면 된다 더보기