본문 바로가기

공부259

[C++/DX11] - Uv를 이용한 슬라이드 퍼즐 게임 uv의 좌표를 이용하여 슬라이드 퍼즐을 만드는 게임. 일반배열로 시도하였을때 그림을 쪼개는 것 까지는 가능하였으나 uv의 좌표를 스왑 시키는 부분에서 문제가있었다. 우측 해답의 이미지는 하나이므로 포인터로 생성 좌측 퍼즐부분은 기본 포인터 1개 + 이중배열 포인터2개로 3개포인터사용 오측이미지는 SafeDelete, 좌측이미지배열은 일반Delete 로 해제.(WHY?) 퍼즐의 가로세로 갯수가 ImGui로 조절되도록 하려면 temp 를 사용해준다. // 코드 예시 int temp = puzzleNum; if (ImGui::SliderInt("PuzzleNum", &temp, 2, 10)) { DeletePuzzle(); puzzleNum = temp; CreatePuzzle(); Shuffle(); } 각.. 2023. 1. 18.
[C++/DX11] - Trail ( 잔상 효과 ) 별모양에 색상랜덤으로 했더니 생각보다 안예쁘다... 이번 프로그램은 deque 를 이용한 Trail (잔상효과) 이다. 보통 지렁이게임이나 게임내에서 대쉬 효과에 사용되는 방법이다. (but. 대쉬의 잔상효과는 deque 보다는 일반배열이 효율이좋다) 일반 배열을 이용하여 생성도 가능하지만 일반배열의 경우 0번 배열~ 마지막배열까지 출력된 후 잔상이 끊어지는 단점이있다. 이를 보완하려면 가능은하지만 조금더 복잡해지는 코드때문에 간단히 적용할 수 있는 deque 를 사용한다. 이번 프로그램으로 일반배열과 deque를 상황에 맞게 사용하는 방법을 조금 참고 할 수 있었다. deque 사용시 반복문은 iterator 를 사용한다. ( begin() , end() 도 사용한다) 일반배열사용시 index를 사용한.. 2023. 1. 16.
[C++/DX11] - AABB 충돌 AABB 충돌. 회전해있지않은 도형 끼리의 충돌이다. 원형의 충돌은 원형의 중심점과 반지름을이용하여 물체와의 거리가 반지름보다 작을경우 충돌판정이다. 사각형의 충돌은 X좌표의 최소치,최대치 Y좌표의 최소치,최대치 끼리의 비교를 이용하여 충돌판정을 한다. 같은 도형끼리의 충돌이라면 간단하지만 주의해야 할 것은 사각형과 원형의 충돌 판정이다. 사각형의 모서리부분은 중심점과 직선인 X,Y축의 길이보다 길다, 때문에 사각형과 원형의 충돌조건에 사각형에 X축으로 원형의 지름만큼 크기를 확장시킨 사각형1과 Y축으로 원형의 지름만큼 크기를 확장시킨 사각형2 마지막으로 원형과 사각형 4개의 꼭짓점에대한 점충돌까지 고려 하여야 한다. 2023. 1. 12.
[C++/DX11] - 충돌,마우스좌표 컬러벡터 이번과제는 마우스좌표의 점과 사각형의 충돌과 위치에따른 사각형의 색의 변화이다. 과제를 진행할때 사용한 방법은 충돌은 if elseif else 를 이용하여 마우스 좌표에따라 충돌 여부를 판단하였다. 사각형의 외부에있을때에는 사각형이 검은색으로 출력되고 마우스 좌표에따라 사각형의 색상이 실시간으로 바뀌게된다. 과제하면서 문제점이생겼던부분은 처음에는 과제대로 색상이안나오고 좌우가 바뀌어 나왔다. 해결 방법으로는 GameObject > ObRect 의 정점 색상을 바꾸는 것으로 해결되었다. 해결되기전 정점색상 정점 1,2 > 흑색(0.0f,0.0f,0.0f,1.0f) 3,4> 백색(1.0f,1.0f,1.0f,1.0f) 해결방법의 정점색상은 12색상과 34색상을 서로 바꾸는 것으로 해결 되었다. 마우스좌표 x.. 2023. 1. 10.
[C++/DX11] - 카메라이동방식 2가지 / 화면 가두기 카메라의 이동 방식 2가지. 1. 카메라가 플레이어를 따라 서서히 이동하는듯한 효과의 방식. - 카메라가 자동적으로 플레이어를 따라가는효과가있다. - 하지만 카메라의 범위가 한계까지 이동하였을떄 화면은 끝에 멈춰있고 플레이어만 움직이는 모습을 볼 수 있다. 2. 카메라가 일정구간(맵)내에서만 이동하되, 플레이어를 따라다니며 쉬지않고 역동적으로 움직이는방식 - 플레이어의 이동 거리에 따라 비율적으로 이동하기떄문에 끊임없이 화면이 움직이는 것을 볼 수 있다. - 플레이어가 화면의 중앙에만 위치하고자 할때는 해당기법보다는 다른 기법을 사용 해야 될 것으로 생각된다. 웬 렉이이렇게 ..... 화면가두기. [ Utility::Saturate ] 화면 또는 카메라의 범위를 지정하여 그 범위를 넘지 않도록 조절한다... 2023. 1. 9.
복습 - DX11 렌더링파이프라인 보호되어 있는 글 입니다. 2023. 1. 8.