Kua Devlog5 미로 생성 알고리즘(3) Recursive_Backtracking 이전 두 알고리즘 모두 간단하고 빠르게 구현이 가능한 알고리즘이였지만 알고리즘 자체의 한계로 미로가 편향적이고 일직선으로 뻥 뚫린 부분이 많았습니다. 그런 아쉬운 부분들을 조금 보안해줄 수 있는 새로운 알고리즘은 Recursive_Backtracking 알고리즘에 대해 알아보겠습니다. Recursive_Backtracking 또한 구현과 이해가 쉬운 알고리즘 입니다. 이전 알고리즘들에 비해 메모리 효율은 아쉬운 단점이 있습니다. 이는 알고리즘 설명과 함께 이어 나가겠습니다. 지난번 두 알고리즘처럼 왼쪽 위를 시작점으로 잡고 그림을 통해 알고리즘 로직을 살펴봅시다. (시작점이 어디든 상관은 없습니다) 먼저 시작 셀을 현재 셀로 저장합니다 (현재 셀은 파란색 셀 입니다.) 현재 셀의 이웃한 셀들중 하나를 랜.. 2020. 11. 9. 미로 생성 알고리즘(2) SideWinder Sidewinder 알고리즘은 지난번 Binary Tree와 비슷한 부분이 많습니다. 구현도 쉽고 빠르며 로직도 조금 유사하죠. 그림과 함께 sidewinder의 진행 과정을 살펴봅시다. 이번에도 왼쪽 위 (0,0)에서 시작합니다. 이제 현재 셀을 기준으로 오른쪽 또는 위로 뚫을지 랜덤 하게 지정합니다. 허나 현재 셀이 맨 위인지라 위를 뚫으면 안되므로 첫 번째 행은 전부 오른쪽으로 뚫어줍니다. 이제 현재 행의 왼쪽부터 오른쪽으로 뚫을지 말지를 랜덤 하게 정해줍니다. 오른쪽으로 뚫었다면 뚫은 셀을 기억하고 있어야 합니다. 랜덤 하게 정해진 값이 오른쪽으로 뚫지 않게 되면 위에서 기억하고 있는 셀들 중 하나를 지정해 위로 뚫어줍니다. 만약 현재 행에서 오른쪽으로 연속적으로 뚫어 총 3칸이 뚫렸다 했을 때 .. 2020. 10. 14. 미로 생성 알고리즘(1) Binary Tree 예전에 다양한 알고리즘들 중 미로 생성 알고리즘이 떠올라 몇 가지 알고리즘들을 알아보고 개발해보았습니다. window API를 활용해 진행하였고, 참고했던 자료와 알고리즘 자체가 쉬웠던지라 오랜만에 쓴 API 프레임 워크 수정 외에는 막힘은 없었습니다. 참고로 알고리즘들은 모두 아래 사이트에서 참고하였습니다. http://www.jamisbuck.org/mazes/ Maze Algorithms Maze Algorithms If you're interested in maze algorithms, I've written a book about the subject: "Mazes for Programmers". Check it out! The source code for these demos is freely.. 2020. 10. 8. DX12 3D 게임 프로그래밍 입문 연습문제 6장-2 해당 포스트는 DirectX12를 이용한 3D 게임 프로그래밍 입문 서적에 출제되는 각 챕터의 연습문제들에 대한 저의 풀이입니다. 문제가 간단하거나 설명 또는 증명과 같은 방식의 문제 또는 제가 해결하지 못한 문제들은 스킵하였습니다. 연습문제 8 상자 예제를, 상자를 와이어프레임 모드로 렌더링 하도록 수정하라. 간단하게 PSO(piperine state object)에서 RasterizerState Desc의 FillMode를 D3D12_FILL_MODE_WIREFRAME로 지정해줍니다. psoDesc.RasterizerState.FillMode = D3D12_FILL_MODE_WIREFRAME; 연습문제 9 상자 예제에서 후면 선별을 비활성화하라 또한 후면 선별 대신 전면 선별을 사용해보라. PSO에서.. 2020. 9. 2. DX12 3D 게임 프로그래밍 입문 연습문제 6장-1 해당 포스트는 DirectX12를 이용한 3D 게임 프로그래밍 입문 서적에 출제되는 각 챕터의 연습문제들에 대한 저의 풀이입니다. 문제가 간단하거나 설명 또는 증명과 같은 방식의 문제 또는 제가 해결하지 못한 문제들은 스킵하였습니다. 연습문제 1 해당 문제는 문제 지문 대로 정점 구조체 수정 후 D3D12_INPUT_ELEMENT_DESC 배열만 각각 알맞게 작성을 해주면 됩니다. 연습문제 2 상자 예저('Box')를 정점 버퍼 두 개 (그리고 입력 슬롯 두 개)를 사용해서 파이프라인에 정점들을 공급하도록 수정하라. 정점 버퍼 하나는 정점의 위치 성분을, 다른 하나는 색상 성분을 담으면 된다. 이를 위해 정점 구조체를 다음 두 구조체로 분할해야 할 것이다. struct VPosData { XMFLOAT3.. 2020. 9. 1. 이전 1 다음