목록C (155)
응애맘마조
Z값에 대한 버퍼에 대해 강의를 했었습니다. exe 화면에서 오브젝트를 그리고 이동을 했을 때 보여지는 부분이 있고 가려지는 부분이 있습니다. 화면상으로는 전부 2D값이지만 사람의 눈으로 원근감을 인식할 수 있기 때문입니다. 그래서 게임상에서는 배경이 먼저 그려지고 그 다음 플레이어나 주변 오브젝트 마지막으로 UI를 그리게 됩니다. 이렇게 깊이 값에 대한 것도 표현하게 되는데 이때 사용하는 것이 Z Buffer입니다. 깊이 버퍼를 말하며 Depth Buffer라고도 합니다. 2D에서 했던 것 처럼 RGB의 색상대로 버퍼를 만들고 해상도의 크기만큼 똑같은 버퍼를 만듭니다. 이후에 그림을 2개 이상 그렸을 때 깊이 값을 비교해서 Z값이 작으면 화면에 보이고 크면 그려져 있지만 화면상에는 보이지 않게 됩니다...
태양계를 만들었던 과제에 대해 강의를 했었습니다. 제가 했었던 과제와는 조금 다르게 클래스로 만들어서 해결했었습니다. //Solar.h #pragma once class Solar : public Actor { public: static Solar* Create(string name = "Solar"); private: Solar(); virtual ~Solar(); public: voidUpdate() override; voidRelease() override; }; //Solar.cpp #include "stdafx.h" #include "Solar.h" Solar* Solar::Create(string name) { Solar* sun = new Solar(); sun->mesh = make_sha..

어제의 그리드에 이어서 구체를 그리드 위에 올리는 것에 대해 했었습니다. 어제의 게시글에도 작성을 해뒀지만 각 격자 간의 거리는 1로 해서 어떤 물체가 있던 대략적인 크기를 알 수 있습니다. 이를 이용해서 여러 개의 객체를 만들 수 있으며 노드를 관리했던 것처럼 부모 객체의 SRT를 상속받아 자녀의 노드를 만들어서 움직일 수 있도록 할 수 있습니다. 2D때 과제 중 태양계를 만들 때와 비슷한 느낌입니다. (해당 게시글은 https://keisukeaso.tistory.com/search/%ED%83%9C%EC%96%91 여기를 참고해 주시면 됩니다.) 위의 영상처럼 만들 수 있습니다. 눈에 보이지는 않게 했지만 이 두 구체 사이에는 연결하는 관절 구조가 있습니다. 화면에 직접 보여주기 위해서 코드를 프레..

색상 구를 만들기에 이어 그리드 매쉬를 배웠습니다. 격자로 된 평면 위에 물체가 어느 위치에 있는지 알기 위해 사용합니다. 기준을 알기 위해 대략적인 길이나 스케일을 나타내기 위해 격자로 나누어졌습니다. 항상 원의 반지름이나 정사각형의 변의 길이를 1로 두는데 그리드도 1로 두면 원이나 정사각형을 원하는 비율로 늘리기 쉽고 원하는 크기만큼 바꿀 수 있기 때문에 1로 둡니다. #include "framework.h" Mesh::Mesh() { vertexType = VertexType::PC; primitiveTopology = D3D11_PRIMITIVE_TOPOLOGY_LINELIST; int size = 256; vertexCount = (size + 1) * 4; byteWidth = sizeof(..
이전까지는 정육면체와 구를 그렸지만 입체감이 없어서 카메라를 멀리 하면 특히나 구는 그냥 원처럼 보였습니다. 그래서 넣는 것이 광원입니다. 그리고 그 광원을 표현하기 위해서는 법선이 필요합니다. 이번에는 2D때 했던 점에 색을 다르게 해서 그러데이션을 주고 그것으로 입체감을 주는 것으로 했습니다. 사실 이 기능은 잘 사용하지 않습니다. 포트폴리오 만들 때도 그랬지만 이미지 파일을 주로 사용했기 때문입니다. 이미지도 우리가 평소에 사용하는 파일은 래스터 이미지입니다. 비트맵 형식으로 저장하게 되고 실물 사진에 많이 사용하게 되며 픽셀이 많아질수록 용량이 커지게 됩니다. 또한 이미지를 확대하게 되면 픽셀이 눈에 보일 정도로 깨지게 됩니다. 그래서 주변 색을 인접해 있는 픽셀의 색으로 추정해서 채우게 됩니다...