D3DX

D3DX

컴퓨팅에서 D3DX(Direct3D Extension)는 Microsoft의 Direct3D 그래픽스 API를 보완하기 위해 작성된 고급 API 라이브러리입니다.D3DX 라이브러리는 Direct3D 7에서 도입되었으며 Direct3D 9에서 개선되었습니다.벡터, 매트릭스 및 색상, 룩앳 및 투영 매트릭스 계산, 스플라인 보간 및 3D 그래픽 프로그래밍에 사용되는 셰이더 컴파일 또는 조립, 압축 골격 애니메이션 스토리지 및 매트릭스 스택과 같은 보다 복잡한 작업에 대한 클래스를 제공합니다.접선 공간 계산, 메쉬 단순화, 미리 계산된 광도 전송, 정점 캐시 친화성 최적화 및 스트립 정렬, 3D 텍스트 메쉬 생성기 등 3D 메쉬에 대한 복잡한 연산을 제공하는 여러 기능이 있습니다. 2D 기능에는 화면 공간 선, 텍스트 및 스프라이트 기반 파티클을 그리는 클래스가 포함됩니다.시스템. 공간 기능에는 다양한 교차로 루틴, 중심 좌표에서 중심 좌표로의 변환 및 경계 상자 및 구 생성기가 포함됩니다.

D3DX 라이브러리에는 게임과 같은 대부분의 2D/3D 응용 프로그램에서 일반적인 작업을 수행하기 위한 사전 작성된 루틴이 포함되어 있습니다.Direct3D API는 비교적 낮은 수준이기 때문에 일반적으로 D3DX 라이브러리를 사용하는 것이 훨씬 쉽습니다.

2012년에 마이크로소프트는 XNA와 같은 다른 개발 프레임워크와 함께 D3DX 9, D3DX 10 및 D3DX 11이 Windows [1]8 SDK에서 더 이상 사용되지 않을 것이라고 발표했습니다.셰이더 효과, 텍스처 관리, 지오메트리 최적화 및 메시 모델은 GitHub를 통해 [2]게시된 별도의 소스로 제공됩니다.벡터 행렬과 같이 D3DX의 수학적 구조는 XNAMath와 DirectXMath로[3] 통합되며 구면 고조파 수학은 별도의 [2]소스로 제공됩니다.

인터페이스

D3DX 라이브러리는 COM 객체 지향 프로그래밍 모델을 따릅니다.기능에 액세스 하려면 , C++ 와 같은 인터페이스를 사용합니다.

ID3DXEfect

ID3DXEfect 인터페이스는 FX 셰이더(.fx)의 컴파일 및 바인딩에 사용됩니다.하드웨어 상수 레지스터, 파라미터 풀, 사용 가능한 샘플러에 텍스처 매핑, '테크닉' 지정 및 렌더 상태 수정 등의 기능을 지원합니다.

ID3DXONT

ID3DXFONT 인터페이스를 사용하여 2D 텍스트를 그릴 수 있습니다.텍스트의 3D 메쉬를 작성하는 D3DXCREateText도 참조하십시오.

ID3DXLINE

ID3DXLINE 인터페이스를 사용하여 패턴으로 안티에이리어싱 화면 공간 선을 그릴 수 있습니다.

ID3DXMESH

ID3DXMESH 인터페이스는 정점 캐시 친화성 및 스트립 순서 변경을 위한 메시 및 메시 최적화의 저장에 사용됩니다.D3DX 의 일부 기능은, 이 인터페이스로 동작합니다.예를 들어 D3DXCommpute Tangent Frame은 일반 매핑이나 시차 매핑 등의 효과를 위해 접선 공간 프레임을 만듭니다.이 클래스의 하위 클래스는 ID3DX입니다.지오메트리를 심플화할 수 있는 PMesh.

ID3DXPRTEngine

사전 계산된 전역 조명 및 부드러운 주변 조명에 사용되는 구형 고조파 조명과 유사한 기술인 사전 계산된 방사 전송에 사용됩니다.

ID3DXSPRite

ID3DXSPRite 인터페이스는 컴퓨터 그래픽에서 스프라이트로 알려진 화면에 2D 이미지를 그리는 데 사용되는 C++ 클래스입니다.DirectX 7에서는 일반적으로 권장되지 않는 DirectDraw API를 사용합니다.

일반적으로 프로그래머는 ID3DXSPRite 객체의 Begin() 메서드를 호출하여 2D 도면용 렌더 상태와 월드 트랜스폼을 설정하고 Draw() 메서드를 호출하여 텍스처를 목록에 추가하고 마지막으로 End() 메서드를 호출하여 이미지를 화면에 그려 원래 그래픽 상태를 복원하기만 하면 됩니다.

D3DXSPRite에 대한 일반적인 비판은 속도가 느리다는 것이지만 Direct3D9 이후 이 문제는 해결되었습니다.

기능들

D3DXCommpute Tangent Frame(D3DXCMpute Tangent Frame)

일반/범프 매핑, 시차 매핑 및 이방성 조명 모델과 같은 효과에 사용되는 메시의 접선 공간 프레임을 계산합니다.중복을 만들어 접선 공간 불연속부의 꼭지점을 처리하므로 털이 많은 공 문제가 해결됩니다.얼굴의 역자외선에 대응하고 있지 않기 때문에, 미러 텍스처 매핑이 되어 있는 모델에서는, 조명에 문제가 생길 가능성이 있습니다.

Direct3D10

Direct3D 10용 D3DX10 유틸리티 라이브러리는 기능면에서 Direct3D9용 D3DX와 유사하며 동일한 D3DXMATH 라이브러리와 Block Compression(BC1-BC5) 소프트웨어 코덱이 포함되어 있습니다.주요 차이점은 Direct3D 10의 이펙트가 OS 컴포넌트가 되고 HLSL 컴파일러가 다른 D3로 이동했다는 것입니다.DCompile DLL 및 텍스처 이미지 로드 및 저장 코드는 Windows 이미징 컴포넌트를 사용했습니다.WIC 사용으로 이행한 결과 D3DX10에서는 D3DX에서 지원되는 Truevision TGA, RGB 이미지 형식 또는 Portable PixMap 파일 형식이 지원되지 않았습니다.D3DX10에서는 UVAtlaschart 텍스처 아틀라싱 또는 Precomputed Radiance Transfer API도 포함되어 있지 않습니다.

모든 버전의 D3DX10은 Microsoft [3]Docs에 의해 권장되지 않습니다.

Direct3D11

Direct3D11용 D3DX11 유틸리티 라이브러리는 D3DX10의 트리밍 버전입니다.여기에는 WIC를 사용한 텍스처 이미지 로드 및 저장 코드와 블록 압축(BC1-BC7) 소프트웨어 코덱이 포함되었지만 그 외에는 거의 포함되지 않았습니다.

모든 버전의 D3DX11은 Microsoft [3]Docs에 의해 권장되지 않습니다.

D3DX9, D3DX10 및 D3DX11의 대부분의 기능은 Direct3D11 이후의 오픈소스 프로젝트로 이행되었습니다.DirectXMath,[4] DirectX Tool Kit,[5] DirectXTex,[6] DirectXMesh [7]및 UVAtlas.[8]또한[9] 오픈 소스 버전의 DXUT와 이펙트(FX11)[10] 런타임도 사용할 수 있습니다.

Direct3D12

DLL 기반의 D3DX12 유틸리티 라이브러리는 없습니다.단, Direct3D12의 기본 도우미용 D3DX12 유틸리티 헤더(모두 인라인 C++ 코드)는 Microsoft[11] Docs에 문서화되어 GitHub에 [12]공개되어 있습니다.수학, 스프라이트, 글꼴 렌더링, 3D 모양, 메시 또는 텍스처 로드와 같은 기능은 포함되지 않습니다.Direct3D 12[13] 용 DirectX 툴킷이 준비되어 있지 않습니다.

레퍼런스

  1. ^ "D3DX Functions (Direct3D 11 Graphics)". Microsoft.
  2. ^ a b "Living without D3DX". MSDN. 20 August 2013.
  3. ^ a b c Microsoft. "Where is the DirectX SDK?". Microsoft. Retrieved 28 June 2020.
  4. ^ "DirectXMath". GitHub. 17 February 2022.
  5. ^ "DirectX Tool Kit for DX11". GitHub. 18 February 2022.
  6. ^ "DirectXTex texture processing library". GitHub. 16 February 2022.
  7. ^ "DirectXMesh geometry processing library". GitHub. 18 February 2022.
  8. ^ "UVAtlas isochart texture atlasing library". GitHub. 15 February 2022.
  9. ^ "DXUT for Direct3D 11". GitHub. 12 February 2022.
  10. ^ "Effects for Direct3D 11". GitHub. 12 February 2022.
  11. ^ Microsoft. "Helper Structures and Functions for D3D12". Microsoft. Retrieved 28 June 2020.
  12. ^ "D3DX12". GitHub.
  13. ^ "DirectX Tool Kit for DX12". GitHub. 18 February 2022.

외부 링크