본문 바로가기

Game Development/DirectX4

2-3. 교환 사슬과 페이지 전환 (SwapChain) 전면 버퍼(Front Buffer)에 모든 픽셀이 그려지는 과정을 보여주고 지우 고를 반복하면 유저는 프레임마다 깜빡거리는 화면을 보게 될 것이다. 이를 해결하기위해 더블버퍼링(Double Buffering)이라는 것을 사용하게 되는데 간단히 말해 후면 버퍼(Back Buffer)에 다음프레임을 그린 다음 전면버퍼와 교체하는 과정이다. 후면 버퍼를 전면 버퍼와 교환해서 화면에 표시하는 것을 제시(Presenting)라고 부른다. ( 전통적으로는 버퍼 교환(Buffer Swapping ) 전면 버퍼와 후면 버퍼는 하나의 교환 사슬(Swap Chain)을 형성한다. 두 개의 버퍼를 사용하는 것을 이중 버퍼링(Double Buffering)이라고 부른다. ( 버퍼 세 개를 사용하는 삼중 버퍼링(Triple B.. 2023. 9. 18.
2-2. 텍스처 및 자료 자원 형식 2차원 텍스처는 사실상 자료 원소들의 행렬이다. 2차원 텍스처의 한 가지 용도는 2차원 이미지 자료를 저장하는 것으로, 그런 경우 텍스처의 각 원소는 한 픽셀의 색상을 담는다. 그러나 그것이 2차원 텍스처의 유일한 용도는 아니다. 예를 들어 법선 매핑이라고 하는 고급 기법에서는 텍스처의 각 원소가 아니라 3차원 벡터를 담는다. 따라서, 텍스처라고 하면 흔히 이미지 자료의 저장을 떠올리지만, 실제로는 그보다 훨씬 범용적이다. 다음은 텍스처를 담을 수 있는 자료 형식들의 예이다. DXGI_FORMAT_R32G32B32_FLOAT: 각 원소는 32비트 부동소수점 성분 세 개로 이루어진다. DXGI_FORMAT_R16G16B16A16_UNORM: 각 원소는 [0, 1] 구간으로 사상되는 16비트 성분 네 개로 .. 2023. 9. 18.
2-1. DirectX 11 장치 초기화 (COM) 2장에서 나의 목표는 아래와 같다. 3차원 그래픽 하드웨어의 프로그래밍에서 Direct3D의 역할을 개괄적으로 이해한다. Direct3D에서 COM의 역할을 이해한다. 2차원 이미지의 저장 방식, 페이지 전환, 깊이 버퍼링, 다중 표본화 같은 기초 그래픽 개념들을 배운다. 성능 카운터 함수들을 이용해서 고해상도 타이머 값을 얻는 방법을 배운다. Direct3D를 초기화하는 방법을 파악한다. COM (Component Object Model) COM은 DirectX의 프로그래밍 언어 독립성과 하위 호환성을 가능하게 하는 기술이다. 프로그래머가 알아야 할 것은 필요한 COM 인터페이스로의 포인터를 특별한 함수들 또는 다른 COM 인터페이스의 메서드를 이용해서 얻는 방법뿐이다. COM 인터페이스는 C++의 n.. 2023. 8. 20.
1. Rendering Pipeline 렌더링 파이프라인이란 ? 3차원으로 만들어진 공간을 2차원으로 투영하기 위한 과정이다. [ DirectX 9에서는 주황색과 초록색 부분을 건너 뛴다. ] Input Assembler Stage : 어떤 정점들이 어떻게 연결되어 있는지 정점 정보를 전달해주는 단계이다. Vertex Shader Stage : 정점 변환을 해주는 단계이다. 스키닝, 모핑, 조명 등등 고급 기법들이 들어갈 때 Vertex Shader에서 하게 된다. [ Tessellation Stages, Geometry Shader Stage 둘다 정점을 추가하는 기능. 정점을 왜 추가할까? MMO게임에서 어떤 지형이 있다고 할 때 멀리 있는 지형은 폴리곤을 줄이고 가까이 있는 지형은 디테일하게 폴리곤을 늘릴 때.(Level Of Detai.. 2023. 7. 1.