전체 글
-
DirectX 11을 이용한 3D게임 프로그래밍 입문 연습문제 6 - 8Graphics/DX11 물방울책 연습문제 풀이 2021. 3. 21. 22:55
문제 상자를 와이어프레임 모드로 렌더링하라. 해결 따로 메서드를 만들어 그안에서 레스터라이저 스탯을 멤버변수에 할당할 것이다. 슬슬 패턴이 비슷해진다. 뭔가를 할당할때마다 구조체를 정의하고.. Create어쩌구를 호출하고.. 눈에보인다. D3D11_RASTERIZER_DESC는 변수가 많지만 이번 문제해결에 쓰이는 변수는 하나밖에없다. FillMode는 렌더링 방식에 대한 정보를 담고있다. D3D11_FILL_WIREFRAME이 와이어프레임모드. 기본값은 D3D11_FILL_SOLID이다. CullMode는 이번문제랑 관련은없지만 재미를위해서 한번 건드려봤다. D3D11_CULL_NONE은 후면 삼각형을 선별하지 않으며 D3D11_CULL_BACK은 선별을 하여 렌더링에서 제외시킨다. 그리고자 하는 도형..
-
DirectX 11을 이용한 3D게임 프로그래밍 입문 연습문제 6 - 7Graphics/DX11 물방울책 연습문제 풀이 2021. 3. 21. 17:49
문제 상자와 피라미드를 같이 배치해라. 단 상자의 정점과 피라미드의 정점을 하나의 정점 버퍼에 넣어야 하며 색인 또한 마찬가지이다. 그리고 서로 도형이 겹치지 않도록 세계 변환 행렬을 적절히 사용하도록 한다. 해결 우선 상자의 정점,색인과 피라미드의 정점, 색인을 정의해야 한다.(색인은 스샷 생략) 멤버 변수 m... VertexOffset, IndexCount, Indexoffset을 정의 및 할당했습니다. 이 변수들에 대한 자세한 설명은 나중에 나오는 DrawIndexed함수를 사용할 때 부가하도록 하겠다. 여기서는 정점의 총 개수와 인덱스의 총 개수를 구합니다. 이는 버퍼를 정의하는 D3 D11_BUFFER_DESC에서 ByteWidth변수에 값을 할당하기 위해 사용되는 변수이다. 구체적으로 vec..
-
DirectX 11을 이용한 3D게임 프로그래밍 입문 연습문제 6 - 4Graphics/DX11 물방울책 연습문제 풀이 2021. 3. 21. 02:44
문제 사각뿔을 그려라(밑면은 녹색, 꼭대기는 빨간색으로) 해결 도형은 기본적으로 정점목록과 색인목록을 알고있어야 화면상에 그릴 수 있습니다. 상자 예제소스에있는 코드를 응용해서 사각뿔을 그려보도록 하겠습니다. 버텍스와 색인은 위사진과 같이 정의하였습니다. 여기서 삼각형을 반드시 시계방향으로 그려줘야하는데 DirectX는 기본적으로 시계방향으로 감긴 삼각형을 전면으로 간주하고 반대방향으로 그리면 후면으로 간주하기 때문입니다. 보통 3차원 물체는 전면으로 그려지게되여 후면은 필요없는 경우가 많다. 그래서 일부러 그리지않음으로써 연산을 최적화하는 방법을 후면 선별(backface culing)이라고 한다. 그리고 색인개수가 18개로 줄어들었으니 DrawIndex인자또한 바꿔준다.
-
DirectX 11을 이용한 3D게임 프로그래밍 입문 연습문제 6 - 2Graphics/DX11 물방울책 연습문제 풀이 2021. 3. 21. 01:27
문제 예제 소스에 나와있던 Vertex구조체는 멤버 변수가 2개(Position과 Color)였으나 문제에서는 각자 구조체로 나누고 그것을 정점 버퍼에 담아 사용하도록 제시했습니다. 해결 기존 예제소스는 하나의 InputSlot에 2개의 속성들을 어떻게 메모리에 넣을 것인지 정의했다. 이번 문제는 InputSlot을 하나가 아닌 2개로 사용하여 정의해보도록 하겠다. InputSlot을 2개 사용하기 위해서 POSITION은 0번째, COLOR는 1번째로 정의하였다. 여기서 byteoffset은 같은 InputSlot을 이용할때 구조체 멤버 변수가 두 개 이상이라면 그 변수들에 대한 byte값을 계산해야 한다. 첫 번째 변수는 당연히 0이지만 n번째 매개변수의 경우 sizeof(2번째 멤버 변수 자료형)+..
-
Directx11 물방울책 연습문제 풀이 스타트Graphics/DX11 물방울책 연습문제 풀이 2021. 3. 18. 22:32
안녕하세요. 이렇게 블로그 글을 써보는 것도, 연습문제 같은걸 풀이해보는 것도 뭐든 다 처음인 신입 블로거입니다. 평소에도 이렇게 글을 써본적이 없으니 보통 사람들은 제 글을 읽다가 눈에서 피가 날지도 모르겠네요. 이렇게 블로그를 시작하게 된 이유는 최근 이 책을 공부하기 시작한 지 1달이 지났는데 눈으로만 읽다 보니 제가 이걸 잘 이해하고 있나 의문이 들기 시작했습니다. 막상 대답하려고 하면 어버버 할 것 같기도 하고요. 그래서 블로그라는 매체를 통해 글을 작성함으로써 제가 공부한 내용들을 되짚어보는 시간을 가져볼까 합니다. 우연히 지나가는 다렉고수님들께서 저한테 사랑의 채찍질을 해준다면 이보다 더 좋은 포상은 없겠네요. 대부분의 책에 서문이 있듯이 저 또한 처음 블로그를 시작하면서 스타트를 끊을 서문..