Directx11 특징
- 능력 집합(capability set) 전체를 지원
-
현재 하드웨어가 그 기능을 지원하는지를 먼저 점검하지 않음
- Direct3D 11에서는 더 이상 하드웨어 기능 점검이 필요하지 않다. 이제는,그래픽 하드웨어가 Direct3D 11 대응 장치이려면 반드시 Direct3D 11 능력 집합 전체를 지원해야 한다는 엄격한 요구조건이 있기 때문
- 기능점검 순서
-
- COM (Component Object Model)
- DirectX의 프로그래밍 언어 독립성과 하위 호환성을 가능하게 하는 기술이다
- C++ 클래스로 간주하고 사용
- (COM 객체들이자신만의고유한방식으로메 모리를 관리하기 때문에`
- COM 인터페이스는 C++의 new 키워드로 생성하지 않는다.
- delete로삭 제하는 것이 아니라 그 인터페이스의 Release 메서드를 호출
D3D_FEATURE LEVEL featureLevels[4] = {
D3D__FEATURE__LEVEL__11__0, / / 우선D3D11지원여부를점검
D3D__FEATURE__LEVEL__10__1, //그 다음으로D3D10.1지원여부를점검
D3D__FEATURE__LEVEL__10 // 그런 다음 D3D 10 지원 여부를 점검
D3D__FEATURE__LEVEL__9__3 // 마지막으로 D3D 9.3 지원 여부를 점검
}
텍스처 및 자료 자원 형식
텍스처에는 특정 형식(format)을 따르는 자료만 담을 수 있는데,구체적인 형식 은 DXGIᅭFORMAT이라는 열거형으로 지정
ex) DXGI_FORMAT_R32G32B32_FLOAT:각 원소는 32비트 부동소수점 성분 세 개로 이루어진다.
교환 사슬과 페이지 전환 (이중 버퍼링)
버퍼링 을 구현할 때에는 하드웨어로 두 개의 텍스처 버퍼를 관리
1. 하나는 현재 모니터에 표 시되는 이미지 자료를 담는 전면 버퍼(front buffer)
2. 애니메이션이 낌벅대는 현상을 방지하기 위해 애니메이션의 한 프레임 전체를 화면 바깥의 텍스처에 그린 후면 버퍼(back buffer)
후면 버퍼를 전면 버퍼와 교환해서 화면에 표시되게 하는 것을 제시(presenting)라고 부른다
깊이 버퍼링
한 물체의 픽셀들이 다른 물체보다 앞에 있는지 판정하기 위해,Direct3D는 깊이 버퍼링 또는 Z-버퍼링이라는 기법을 사용
다중표본화의 이론
확대시 계단 현상이라는 앨리어싱 효과를 해결하기 위한 이론
앨리어싱 제거(antialiasing)를 위한 기법들이 존재
1. 초과표본화(supersampling)
- 후면 버퍼와 깊이 버퍼를 화면 해상도보다 4배(가로, 세로 두 배씩) 크게 잡고 화면에 표시할때 원래 크기의 버퍼로 환원 (resolving)
- 단점) 초과표본화는 픽셀 처리량과 메모리 소비량이 네 배라서 비용이 크다
많은 리소스의 단점을 보안하기 위해
2. Direct3D는 다중표본화 (multisampling)라는 절충적인 앨리어싱 제거 기법을 지원
- 이미지 색상을 각 부분픽셀마다 계산 하는 것이 아니라 픽셀당 한 번만 계산하고(픽셀의 중심에서),그 색상과 부분픽셀들의 가시 성(이를 위해 부분픽셀당 깊이.스텐실 판정이 일어남)과 포괄도(부분픽셀을 다각형이 어느 정도나 덮고 있는지를 뜻하는 값)를 이용해서 최종 색상을 결정
결론
- 이미지 색상을 계산하는 것은 그래픽 파이프라인에서 가장 비싼 단계 중 하나이기 때문에 초과표본화는 비용이 절감
- 초과표본화는기술적으로는 더 정확하고 텍스처와 셰이더 앨리어싱을 처리하는 반면 다중표본화는 그렇지 못하다.
댓글