목록C (155)
응애맘마조
오늘은 장면 Scene 전환에 대해서 배웠습니다. 스테이지나 맵 전환에서 주로 사용합니다. 들고 있는 객체는 맵마다 다 다릅니다. 마을에서의 객체, 상점에서의 객체, 보스방에서의 객체 등등 전부 제각각의 객체를 가지고 있습니다. 하지만 항상 런타임 중에 동적할당으로 생성했었는데 그렇게 되면 메모리누수가 되기 때문에 컴퓨터에 안 좋은 영향을 주게 됩니다. 그래서 배열이나 오브젝트 풀링을 사용합니다. 맵 전환이나 일정 부분을 넘어갔을 때 로딩중의 장면이 나오면서 잠깐잠깐 느려지는 경우가 있습니다. 그때 볼 수 있는 장면이 로딩씬입니다. 로딩씬은 미리 생성했던 객체를 가져오기 때문에 느려질 수밖에 없습니다. 그렇다고 SafeDelete를 사용하게 되면 메모리 해제를 하게 되어 전환 시에 가리키고 있는 주소가 ..
어제 말했던대로 폰트와 조명에 대해서 배웠습니다. 먼저 폰트입니다. 폰트로 DirectX에 컴포넌트로 DirectWrite로 있습니다. 그림판에 텍스트로 선택하면 사각형 박스가 나오는 것 처럼 DirectX의 폰트도 똑같습니다. 지금 2D를 배우지만 시스템은 3D로 배우고 있습니다. 하지만 폰트는 2D로 포함되기 때문에 D2D와 함께 사용해야합니다. 폰트토 배열처럼 vector를 사용합니다. textDesc.font = font; textDesc.fontSize = size; textDesc.stretch = stretch; textDesc.style = style; textDesc.weight = weight; 폰트의 매개변수입니다. 다음 조명입니다. 조명도 하나만 관리하기 때문에 싱글톤입니다. str..
오늘부터 게임의 기능을 작은 것부터 조금씩 알아봤습니다. 먼저 UI입니다. UI는 마우스와 충돌했을 때나 눌렀을 때의 역할을 합니다. 고정된 창에서만 프로그램이 동작한다면 상관이 없지만 카메라의 영향도 받는다면 위치가 달라지게 됩니다. 그래서 창에서 x, y 좌표의 값을 빼야 카메라가 움직여도 제대로 된 위치에서 동작하게 됩니다. Texture입니다. 이미지와 관계가 있으며 싱글톤입니다. 픽셀 수도 Texture이며 자원을 불러오는 클래스입니다. SRT만 다를 뿐이고 자원을 제각각 사용하게 되면 효율이 좋지 않기 때문입니다. 그래서 배열로 쓰게 된다면 선형 구조이기 때문에 처음부터 끝까지 탐색을 하게 되기 때문에 트리나 해시로 탐색이 용이한 구조로 되어있는 STL의 map을 사용하는 것이 좋습니다. ma..
이미지의 알파에 대해서 배웠습니다. 투명도와 관계되어 있습니다. 값은 0 ~ 1 사이입니다. 1로 갈수록 불투명해집니다. 여태 나타내던 타일맵, 캐릭터, 오브젝트 등등 모두 알파가 1이라서 선명하게 나타낼 수 있었습니다. 예를 들어서 빨간색 화면에 파란색 사각형을 놓았다고 했을 때 각각의 알파는 1이라서 각각의 색깔로 보이게 됩니다. 하지만 알파를 낮춰서 빨간색을 0.5, 파란색을 0.5로 역행렬을 곱해서 1의 비율로 맞췄을 때 둘은 섞여서 보라색에 가까운 색을 보이게 됩니다. 그렇기 때문에 알파는 색이 아니고 색의 섞임으로 봐야 됩니다. 약간 필터에 대해서 살짝 알아봤습니다. 이미지를 표현할 때 D3D11_FILTER_MIN_MAG_MIP_POINT는 주변에 있는 픽셀로 샘플러 색을 채웁니다. D3D1..
어제 잠깐 배웠던 A*을 했습니다. 어제일자 강의에서 말했던 대로 최소비용으로 찾아가는 방식이고 비용이 커지면 갱신을 하지 않는 특성입니다. 따로 PathFinding 함수를 만들어서 사용했습니다. (객체가 아니기 때문에 따로 클래스로 빼지 않았습니다. 또한 잘 다루지 않는 기능이기도 하고 강사님이 독자적으로 만들었기 때문에 코드는 공개하지 않겠습니다.) 공식은 F = G + H입니다. G는 출발점으로부터 현재 위치까지 경로를 따라 이동하는 데 사용되는 비용입니다. H는 현재 위치에서 도착점까지의 경로를 따라 이동하는 데 사용되는 비용입니다. F는 G와 H의 합산입니다. 먼저 길을 찾았는지 아닌지 판단을 해야 되기 때문에 bool 값으로 사용하였습니다. 처음 시작할 때 타일맵 밖으로 이동하려고 하면 이동..