일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CommandList
- Direct Init
- 다이렉트X 튜토리얼
- CPU
- Direct3D
- engine
- UE4
- 동기화
- Input Assembler
- RenderTargetView
- vertex
- 다이렉트 초기화
- GPU
- 전처리문
- DESC
- View
- c
- 프로그래밍
- 다이렉트X
- C++
- 코딩
- DirectX
- 게임수학
- C언어
- DirectXTK
- DirectX12
- 세팅
- swapchain
- Direct3D Init
- 다중표본화
- Today
- Total
비타Cpp
텍스처 형식(Texture Format) 본문
2차원 텍스처는 자료 원소들의 2차원 행렬이다.
2차원 텍스처의 용도 하나는 2차원 이미지 라료를 저장하는 것인데, 이때 텍스처의 각 원소는 픽셀 하나의 색상을 담는다. 그러나 이것이 텍스처의 유일한 용도는 아니다. 예를 들어 법선 매핑이라고 하는 고급 기법에서는 텍스처의 각 원소가 색상이 아니라 3차원 벡터를 담는다.
텍스처는 단순한 자료 배열인 것만은 아니다. 텍스처에 밉맵 수준(Mipmap Level)들이 존재할 수 있으며, GPU는 필터링, 다중표본화 등의 특별한 연산을 텍스처에 적용할 수 있다.더 나아가서, 텍스처에 아무 자료나 담을 수 있는 것은 아니다. 텍스처에는 특정 형식(Format)의 자료 원소들만 담을 수 있는데, 구체적인 형식은 DXGI_FORMAT이라는 열거형으로 지정한다.
DXGI_FORMAT_R32G32B32_FLOAT: 각 원소는 32비트 부동소수점 성분 3개로 이루어진다.
DXGI_FORMAT_R16G16B16A16_UNORM: 각 원소는 [0,1] 구간으로 사상되는 16비트 성분 4개로 이루어진다.
DXGI_FORMAT_R32G32_UINT: 각 원소는 부호 없는 32비트 정수 성분 2개로 이루어진다.
여기서 R, G, B, A 는 각각 적(Red), 녹(Green), 청(Blue), 알파(Alpha) 성분을 뜻한다.
그래픽에서 하나의 색상은 3원색인 R,G,B의 조합으로 만들어진다.(알파는 투명도)
그러나, 앞에서 말했듯 텍스처에 반드시 색상을 담아야 하는 것은 아니다.
예를 들어 DXGI_FORMAT_R32G32B32_FLOAT는 텍스처 원소 형식은 부동소수점 성분 3개로 구성되며, 따라서 좌표성분들이 부동소수점 수인 임의의 3차원 벡터를 담을 수 있다.
그리고 무형식(Typeless) 텍스처들도 있는데, 이런 텍스처는 일단 메모리만 확보해 두고 자료의 구체적인 해석 방식은 나중에 텍스처를 파이프라인에 묶을때 지정하는 용도로 쓰인다.
예를 들어 DXGI_FORMAT_R16G16B16A16_TYPELESS는 각16비트 성분의 구체적인 자료 형식은 지정하지 않는다.
마지막으로 DXGI_FORMAT 열거형은 정점 자료 형식과 색인 자료 형식을 서술할 때도 쓰인다.
'DirectX12 > 메모' 카테고리의 다른 글
다중 표본화의 이론 (0) | 2021.07.18 |
---|---|
Resource & Descriptor(자원과 서술자) (0) | 2021.07.18 |
깊이 버퍼링(Depth Buffer) (0) | 2021.07.09 |
SwapChain 과 페이지 전환 (0) | 2021.07.09 |
COM(Component Object Model) (0) | 2021.07.09 |