전체 글

WIN32API FrameWork/한단계씩 직접 구현

43. 충돌 처리 3 - 충돌체 2

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [코드 문제 수정] GameInfo.h - 생성자에서 Enable의 기본값을 true로 설정 - 일단 가장 기본이 되는 박스충돌부터 구현한다. - 박스 충돌이 일어난 상황을 가정해보자. -- 이 상황에서는 빨간 사각형의 LeftTop.x가 파란 사각형의 RightBottom.x보다 작고 LeftTop.y가 RightBottom.y..

WIN32API FrameWork/한단계씩 직접 구현

43. 충돌 처리 2 - 충돌체 1

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 이제 실제 충돌을 확인할 객체를 만들어주어야 한다. class CCollider - 실제로 CGameObject에 붙어서 충돌을 확인할 객체 -> 외부에서의 접근을 막고 friend class로 등록해 준다. - CRef 클래스를 상속받아 참조 카운팅을 해준다. - 소멸자를 순수가상함수로 선언하여, 상속을 받는 객체가 있어야만 쓸 수 있도록 추상 클래스로 만들어주자. -- 충..

WIN32API FrameWork/한단계씩 직접 구현

42. 충돌 처리 1

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 이제 게임오브젝트들간의 충돌을 계산하는 '충돌체' 처리를 구현할 단계이다. - 일단은 가장 느리지만 단순한 방법으로 충돌 처리를 구현한다. -- 한 충돌체에 대하여 다른 나머지 모든 충돌체들과의 충돌 여부를 계산한다. cf)충돌 처리는 계산 자원을 많이 잡아먹는 과정이기에 최적화가 많이 필요하다. 나중에 가면 '공간분할'이라는 방법을 통해 충돌을 계산할 예정. flag.h <..

WIN32API FrameWork/한단계씩 직접 구현

41. 카메라

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 창의 크기가 만약 1280x720 사이즈라면, 우리가 창에서 쓸 수 있는 좌표값은 (0, 0)부터 최대 (1280, 720) 까지이다. 이 이상 또는 이하의 값으로 그려내면 화면 밖으로 나가버린다. - 우리는 그래서 큰 판을 만들어놓고, 이 판을 움직이면서 '그려질 지점'을 계속 바꿔주어서 카메라를 사용할 수가 있다. - 이런 고정된 확대기를 놓은 뒤, 아래에 놓인 판을 움직..

WIN32API FrameWork/한단계씩 직접 구현

40. Y Sort Rendering

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [사전 지식] - STL에서는 기본적으로 정렬 알고리즘을 제공하고 있다. - (자료구조).sort(bool 타입을 반환하는 함수 포인터) -- 함수 포인터로는 전역 함수만을 받는다. 이 함수 포인터로 정렬 기준을 정한다. --- static 멤버 메소드로 선언하면 전역 함수와 똑같이 취급되므로, 사용할 비교 메소드를 static으로 선언해주자. - 지금 게임을 구동시켜보면, 무조..

WIN32API FrameWork/한단계씩 직접 구현

39. 배경화면 생성 및 플레이어 이동

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com class CBack - 배경화면 등록은 매우 간단하게 가능하다. - CGameObject를 상속 받는 클래스를 만들고, 거기에 텍스처를 등록하고, 사이즈를 창 크기만큼 설정해준 뒤(CGameManager에서 받아온다), 배경화면을 사용할 씬에서 가장먼저 CreateObject()를 해주면 끝이다. 아직까지는 생성 순서에 따라서 렌더링 순서가 뒤바뀌지만, 조만간 이것도 정렬을 통..

WIN32API FrameWork/한단계씩 직접 구현

38-1. 애니메이션을 등록하는 다양한 방법들

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com * 가장 먼저, 애니메이션을 사용할 CGameObject에서는 애니메이션을 동적할당해주는 메소드를 호출해주어야 한다. //애니메이션 파일을 동적 할당 CreateAnimation(); - 직접 이미지 파일 주소를 입력하여 애니메이션을 생성한다. 비효율적이므로 사용하지 않는 것이 좋다. //1-1. Frame 등록 -> 배열을 직접 만들어서 등록하는 방법 //파일 이름을 넣어둘 배..

WIN32API FrameWork/한단계씩 직접 구현

38. 애니메이션 시퀀스 2(완료)

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com class CAnimation - 여러 개의 CAnimationInfo를 들고 있으면서 필요할 때마다 모션 전환을 해주는 객체 * 애니메이션 구조 1. CAnimationSequence(그냥 프레임 데이터만 들고있는 클래스) 2. CAnimationInfo(해당 프레임들이 언제 한번 바뀌어야 하는지, 어떤 프레임에서 어떤 작업을 해줄지, 애니메이션 재생이 끝나면 어떤 작업을 해줄..

WIN32API FrameWork/한단계씩 직접 구현

37. 애니메이션 시퀀스 1

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 달리기, 공격, 걷기 등 특정 액션에 따라 재생되는 애니메이션 한 덩어리를 '시퀀스'라고 한다. - 이 정보를 저장하고 관리해줄 클래스를 만든다. - 스프라이트는 한 줄일 수도 있고, - 두 줄이 될 수도 있다. - 그러므로 모든 상황에 대해 처리가 가능하도록 해주어야 한다. class CAnamationManager - 애니메이션을 CScene에서 여러 개를 쓸 수도 있기 ..

WIN32API FrameWork/한단계씩 직접 구현

36. 이미지의 투명 처리

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 애니메이션을 잘 보면, 텍스처가 그려지는 사각형 부분이 아예 덮히는 것을 확인할 수 있다. 그리고 싶은 부분(테두리) 바깥은 투명하게 처리해야되는 게 맞지 않을까? - .bmp 이미지 파일은 투명 데이터를 가지고 있지 않지만, 우리는 '특정 색깔을 정해서' 그 색을 출력하지 않을 수 있다. -- 이를 '컬러 키' 방식이라고 한다. CF) 이외에도 투명을 처리하는 방식은 '블렌..

WIN32API FrameWork/한단계씩 직접 구현

35. 더블 버퍼링

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [사전 지식] - 여태까지 뒤에 자국이 남았던 이유는 한 장 도화지를 지우지 않고 계속 덮어서 그렸기 때문 - 또한 계속 깜빡거렸던 이유도 오브젝트 하나를 그릴 때마다 화면이 갱신되었기 때문이다. - 이 현상을 해결하기 위한 것이 더블버퍼링이다. 1. 도화지를 두개 만든다. 2. 한 장은 주표면용(모니터에 표시되는 부분) -> 기존의 hDC 3. 다른 한 장은 ..

WIN32API FrameWork/한단계씩 직접 구현

34. 씬 단위의 리소스 관리

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com - 텍스처 자원 관리를 효율적으로 하기 위해서, 씬에서도 텍스처 목록을 들고 있도록 한다. -- 새 씬이 로드되면서 텍스처를 등록할 때 만약 기존 텍스처가 존재하면, 해당 텍스처의 주소만 받아오고 로드를 하지 않아도 된다. 등록되어있지 않은 텍스처만 새로 로드한다. -- 새 씬의 로드가 완료되었으면, 기존 씬은 메모리에서 제거한다. 이 때, 새 씬에서 사용하지 않는 텍스처는 메모..

hyrule
C++ 프로그래밍 공부