準備中
CG 素人が DirectX Graphics について調べたことのメモです.
主に MSDN のマニュアルやサンプルコードを読んだり,
自分で実験して確認したことをまとめています.
注意:最近の CG 業界用語は英語をカタカナにしただけでよくわからないものが多いので, 他の科学技術分野の用語 (特に数学・物理) や勝手訳語を使っています.
HLSL Shader Model |
DWrite Ver. |
D2D Ver. |
DXGI Ver. |
D3D Ver. |
OS Ver. |
---|---|---|---|---|---|
1,2,3 | - | - | - | D3D9 | XP |
D3D9.0c | XP SP2 | ||||
D3D9.0Ex | Vista | ||||
4 | DXGI1.0 | D3D10 | Vista / Server 2008 | ||
4.1 | D3D10.1 | Vista SP1 | |||
5 | D2D1.0 | DXGI1.1 | D3D11.0 | Vista SP2 / Server 2008 R2 / Windows 7 | |
(1.0) | Vista SP2 + Platform Update / Server 2008 R2 / Server 2008 SP2 + Platform Update / Windows 7 |
||||
(1.1) | D2D1.1 | DXGI1.2 | D3D11.1 | Windows 7 SP1 + Platform Update (KB2670838) / Server 2008 R2 SP1 + Platform Update (KB2670838) / Windows 8 / Windows RT / Server 2012 |
|
(1.2) | D2D1.2 | DXGI1.3 | D3D11.2 | Windows 8.1 / RT 8.1 / Server 2012 R2 | |
5.1 | (1.3) | D2D1.3 | D3D11.3 | Windows 10 | |
DXGI1.4 | D3D12 | ||||
6 | DXGI1.5 | D3D11.4 | Windows 10 November 2015 Update (version 1511, build 10586) |
D3DCompiler DLL Version |
SDK Version |
---|---|
D3DCompiler_42.dll | DirectX SDK (Feb 2010) |
D3DCompiler_43.dll | DirectX SDK (June 2010) |
D3DCompiler_44.dll | Windows Kits 8.0 (alpha) |
D3DCompiler_45.dll | たぶん同上 |
D3DCompiler_46.dll | Windows Kits 8.0 (RTM 以降) / Visual Studio 2012 |
D3DCompiler_47.dll | Windows Kits 8.1 / Visual Studio 2013 Windows Kits 10.0 / Visual Studio 2015/2017/2019 |
■参考
2014/07/01(火) 初版 2015/08/14(金) VS2015 を追記. 2017/04/30(日) VS2017 を追記. 2019/07/08(月) VS2019 を追記. |
■調査方法
Windows SDK (Kits) 10 の関連ヘッダファイルから,"MIDL_INTERFACE" や "DECLARE_INTERFACE" で検索してインタフェースの継承関係を抽出.
Header Files:dxgi.h,dxgi1_2.h,dxgi1_3.h,dxgi1_4.h,dxgi1_5.h,dxgi1_6.h,dxgidebug.h
IUnknown │ ├─IDXGIObject │ │ │ ├─IDXGIFactory │ │ │ │ │ └─IDXGIFactory1 (1.1) │ │ │ │ │ └─IDXGIFactory2 (1.2) │ │ │ │ │ └─IDXGIFactory3 (1.3) │ │ │ │ │ └─IDXGIFactory4 (1.4) │ │ │ │ │ └─IDXGIFactory5 (1.5) │ │ │ │ │ └─IDXGIFactory6 (1.6) │ │ │ │ │ └─IDXGIFactory7 (1.6) │ │ │ ├─IDXGIAdapter │ │ │ │ │ └─IDXGIAdapter1 (1.1) │ │ │ │ │ └─IDXGIAdapter2 (1.2) │ │ │ │ │ └─IDXGIAdapter3 (1.3) │ │ │ │ │ └─IDXGIAdapter4 (1.6) │ │ │ ├─IDXGIDevice │ │ │ │ │ └─IDXGIDevice1 (1.1) │ │ │ │ │ └─IDXGIDevice2 (1.2) │ │ │ │ │ └─IDXGIDevice3 (1.3) │ │ │ │ │ └─IDXGIDevice4 (1.5) │ │ │ ├─IDXGIDeviceSubObject │ │ │ │ │ ├─IDXGIResource │ │ │ │ │ │ │ └─IDXGIResource1 (1.2) │ │ │ │ │ ├─IDXGISurface │ │ │ │ │ │ │ └─IDXGISurface1 (1.1) │ │ │ │ │ │ │ └─IDXGISurface2 (1.2) │ │ │ │ │ ├─IDXGISwapChain │ │ │ │ │ │ │ └─IDXGISwapChain1 (1.2) │ │ │ │ │ │ │ └─IDXGISwapChain2 (1.3) │ │ │ │ │ │ │ └─IDXGISwapChain3 (1.4) │ │ │ │ │ │ │ └─IDXGISwapChain4 (1.5) │ │ │ │ │ └─IDXGIKeyedMutex │ │ │ ├─IDXGIOutput │ │ │ │ │ └─IDXGIOutput1 (1.2) │ │ │ │ │ └─IDXGIOutput2 (1.3) │ │ │ │ │ └─IDXGIOutput3 (1.3) │ │ │ │ │ └─IDXGIOutput4 (1.4) │ │ │ │ │ └─IDXGIOutput5 (1.5) │ │ │ │ │ └─IDXGIOutput6 (1.6) │ │ │ └─IDXGIOutputDuplication (1.2) │ ├─IDXGIDisplayControl (1.2) │ ├─IDXGIInfoQueue (1.2) │ ├─IDXGIDebug (1.2) │ │ │ └─IDXGIDebug1 (1.3) │ ├─IDXGIDecodeSwapChain (1.3) │ ├─IDXGIFactoryMedia (1.3) │ └─IDXGISwapChainMedia (1.3)
Header File:D3Dcommon.h
IUnknown │ └─ID3DBlob (=ID3D10Blob) ID3DInclude
Header Files:D3D12.h,D3D12Shader.h,D3D12SDKLayers.h. (Windows SDK 10.0.18362.0 から抽出)
IUnknown │ ├─ID3D12Object │ │ │ ├─ID3D12Device │ │ │ │ │ └─ID3D12Device1 │ │ │ │ │ └─ID3D12Device2 │ │ │ │ │ └─ID3D12Device3 │ │ │ │ │ └─ID3D12Device4 │ │ │ │ │ └─ID3D12Device5 │ │ │ │ │ └─ID3D12Device6 │ │ │ └─ID3D12DeviceChild │ │ │ ├─ID3D12RootSignature │ │ │ ├─ID3D12CommandList │ │ │ │ │ └─ID3D12GraphicsCommandList │ │ │ │ │ └─ID3D12GraphicsCommandList1 │ │ │ │ │ └─ID3D12GraphicsCommandList2 │ │ │ │ │ └─ID3D12GraphicsCommandList3 │ │ │ │ │ └─ID3D12GraphicsCommandList4 │ │ │ ├─ID3D12Pageable │ │ │ │ │ ├─ID3D12CommandAllocator │ │ │ │ │ ├─ID3D12CommandQueue │ │ │ │ │ ├─ID3D12CommandSignature │ │ │ │ │ ├─ID3D12DescriptorHeap │ │ │ │ │ ├─ID3D12Fence │ │ │ │ │ │ │ └─ID3D12Fence1 │ │ │ │ │ ├─ID3D12Heap │ │ │ │ │ │ │ └─ID3D12Heap1 │ │ │ │ │ ├─ID3D12MetaCommand │ │ │ │ │ ├─ID3D12PipelineState │ │ │ │ │ ├─ID3D12QueryHeap │ │ │ │ │ ├─ID3D12Resource │ │ │ │ │ │ │ └─ID3D12Resource1 │ │ │ │ │ └─ID3D12StateObject │ │ │ ├─ID3D12LifetimeTracker │ │ │ ├─ID3D12PipelineLibrary │ │ │ │ │ └─ID3D12PipelineLibrary1 │ │ │ └─ID3D12ProtectedSession │ │ │ └─ID3D12ProtectedResourceSession │ ├─ID3D12RootSignatureDeserializer │ ├─ID3D12Debug │ ├─ID3D12DebugDevice │ ├─ID3D12DebugCommandList │ ├─ID3D12DebugCommandQueue │ ├─ID3D12InfoQueue │ ├─ID3D12ShaderReflection │ ├─ID3D12LibraryReflection │ ├─ID3D12LifetimeOwner │ ├─ID3D12StateObjectProperties │ ├─ID3D12SwapChainAssistant │ ├─ID3D12Tools │ ├─ID3D12DeviceRemovedExtendedData │ ├─ID3D12DeviceRemovedExtendedDataSettings │ └─ID3D12VersionedRootSignatureDeserializer ID3D12ShaderReflectionType ID3D12ShaderReflectionVariable ID3D12ShaderReflectionConstantBuffer ID3D12FunctionReflection ID3D12FunctionParameterReflection
Header Files:D3D11.h,D3D11_1.h,D3D11_2.h,D3D11_3.h,D3D11_4.h,D3D11Shader.h,D3D11SDKLayers.h,D3D11on12.h.
IUnknown │ ├─ID3D11Device │ │ │ └─ID3D11Device1 (11.1) │ │ │ └─ID3D11Device2 (11.2) │ │ │ └─ID3D11Device3 (11.3) │ │ │ └─ID3D11Device4 (11.4) │ │ │ └─ID3D11Device5 (11.4) │ ├─ID3D11DeviceChild │ │ │ ├─ID3D11DeviceContext │ │ │ │ │ └─ID3D11DeviceContext1 (11.1) │ │ │ │ │ └─ID3D11DeviceContext2 (11.2) │ │ │ │ │ └─ID3D11DeviceContext3 (11.3) │ │ │ │ │ └─ID3D11DeviceContext4 (11.3) │ │ │ ├─ID3D11Resource │ │ │ │ │ ├─ID3D11Buffer │ │ │ │ │ ├─ID3D11Texture1D │ │ │ │ │ ├─ID3D11Texture2D │ │ │ │ │ │ │ └─ID3D11Texture2D1 (11.3) │ │ │ │ │ └─ID3D11Texture3D │ │ │ │ │ └─ID3D11Texture3D1 (11.3) │ │ │ ├─ID3D11View │ │ │ │ │ ├─ID3D11DepthStencilView │ │ │ │ │ ├─ID3D11RenderTargetView │ │ │ │ │ │ │ └─ID3D11RenderTargetView1 (11.3) │ │ │ │ │ ├─ID3D11ShaderResourceView │ │ │ │ │ │ │ └─ID3D11ShaderResourceView1 (11.3) │ │ │ │ │ ├─ID3D11UnorderedAccessView │ │ │ │ │ │ │ └─ID3D11UnorderedAccessView1 (11.3) │ │ │ │ │ ├─ID3D11VideoProcessorInputView (Direct3D 11 Video API) │ │ │ │ │ ├─ID3D11VideoProcessorOutputView (Direct3D 11 Video API) │ │ │ │ │ └─ID3D11VideoDecoderOutputView (Direct3D 11 Video API) │ │ │ ├─(Shader) │ │ │ │ │ ├─ID3D11VertexShader │ │ │ │ │ ├─ID3D11HullShader │ │ │ │ │ ├─ID3D11DomainShader │ │ │ │ │ ├─ID3D11GeometryShader │ │ │ │ │ ├─ID3D11PixelShader │ │ │ │ │ └─ID3D11ComputeShader │ │ │ ├─ID3D11Asynchronous │ │ │ │ │ ├─ID3D11Counter │ │ │ │ │ └─ID3D11Query │ │ │ │ │ ├─ID3D11Query1 (11.3) │ │ │ │ │ └─ID3D11Predicate │ │ │ ├─ID3D11ClassInstance │ │ │ ├─ID3D11ClassLinkage │ │ │ ├─ID3D11CommandList │ │ │ ├─ID3D11DepthStencilState │ │ │ ├─ID3D11Fence (11.3) │ │ │ ├─ID3D11InputLayout │ │ │ ├─ID3D11RasterizerState │ │ │ │ │ └─ID3D11RasterizerState1 (11.1) │ │ │ │ │ └─ID3D11RasterizerState2 (11.3) │ │ │ ├─ID3D11BlendState │ │ │ │ │ └─ID3D11BlendState1 (11.1) │ │ │ ├─ID3D11SamplerState │ │ │ ├─ID3DDeviceContextState (11.1) │ │ │ ├─ID3D11VideoContext │ │ │ │ │ └─ID3D11VideoContext1 (11.1) │ │ │ ├─ID3D11VideoDecoder │ │ │ ├─ID3D11VideoProcessor │ │ │ ├─ID3D11VideoProcessorEnumerator │ │ │ │ │ └─ID3D11VideoProcessorEnumerator1 (11.1) │ │ │ ├─ID3D11AuthenticatedChannel │ │ │ └─ID3D11CryptoSession │ ├─ID3D11VideoDevice │ │ │ └─ID3D11VideoDevice1 (11.1) │ ├─ID3D11Multithread (11.4) │ ├─ID3D11Linker │ ├─ID3D11LinkingNode │ ├─ID3D11FunctionLinkingGraph │ ├─ID3D11Module │ ├─ID3D11ModuleInstance │ ├─ID3D11LibraryReflection │ ├─ID3D11ShaderReflection │ ├─ID3DUserDefinedAnnotation (11.1) │ ├─ID3D11Debug │ ├─ID3D11InfoQueue │ ├─ID3D11TracingDevice │ ├─ID3D11RefTrackingOptions │ ├─ID3D11RefDefaultTrackingOptions │ └─ID3D11SwitchToRef (Not supported in D3D11) ■D3D11on12 IUnknown │ └─ID3D11On12Device │ └─ID3D11On12Device1
Header Files:D3D10.h,D3D10effect.h,d3d10sdklayers.h,D3D10shader.h,D3D10_1.h,D3D10_1shader.h, D3Dcommon.h.
IUnknown │ ├─ID3D10Device │ │ │ └─ID3D10Device1 (10.1) │ ├─ID3D10DeviceChild │ │ │ ├─ID3D10Resource │ │ │ │ │ ├─ID3D10Buffer │ │ │ │ │ ├─ID3D10Texture1D │ │ │ │ │ ├─ID3D10Texture2D │ │ │ │ │ └─ID3D10Texture3D │ │ │ ├─(Shader) │ │ │ │ │ ├─ID3D10VertexShader │ │ │ │ │ ├─ID3D10GeometryShader │ │ │ │ │ └─ID3D10PixelShader │ │ │ ├─ID3D10View │ │ │ │ │ ├─ID3D10DepthStencilView │ │ │ │ │ ├─ID3D10RenderTargetView │ │ │ │ │ └─ID3D10ShaderResourceView │ │ │ │ │ └─ID3D10ShaderResourceView1 (10.1) │ │ │ ├─ID3D10Asynchronous │ │ │ │ │ ├─ID3D10Counter │ │ │ │ │ └─ID3D10Query │ │ │ │ │ └─ID3D10Predicate │ │ │ ├─ID3D10InputLayout │ │ │ ├─ID3D10RasterizerState │ │ │ ├─ID3D10DepthStencilState │ │ │ ├─ID3D10SamplerState │ │ │ └─ID3D10BlendState │ │ │ └─ID3D10BlendState1 (10.1) │ ├─ID3D10StateBlock │ ├─ID3D10Blob │ ├─ID3D10Effect │ ├─ID3D10EffectPool │ ├─ID3D10InfoQueue │ ├─ID3D10Multithread │ ├─ID3D10ShaderReflection │ ├─ID3D10ShaderReflection1 (10.1) │ ├─ID3D10SwitchToRef │ └─ID3D10Debug ID3D10EffectTechnique ID3D10EffectPass ID3D10EffectType (Effect Reflection Interfaces) ID3D10EffectVariable │ ├─ID3D10EffectBlendVariable │ ├─ID3D10EffectConstantBuffer │ ├─ID3D10EffectDepthStencilVariable │ ├─ID3D10EffectDepthStencilViewVariable │ ├─ID3D10EffectMatrixVariable │ ├─ID3D10EffectRasterizerVariable │ ├─ID3D10EffectRenderTargetViewVariable │ ├─ID3D10EffectSamplerVariable │ ├─ID3D10EffectScalarVariable │ ├─ID3D10EffectShaderResourceVariable │ ├─ID3D10EffectShaderVariable │ ├─ID3D10EffectStringVariable │ └─ID3D10EffectVectorVariable
Header Files:D3DX10core.h,D3DX10math.h,D3DX10mesh.h,D3DX11core.h.
IUnknown │ ├─ID3DX10Font │ ├─ID3DX10Mesh │ ├─ID3DX10MeshBuffer │ ├─ID3DX10SkinInfo │ ├─ID3DX10Sprite │ ├─ID3DX10ThreadPump │ ├─ID3DX11ThreadPump │ └─ID3DXMatrixStack
Header Files:D2D1.h,D2D1EffectAuthor.h,D2D1_1.h,D2D1_2.h,D2D1_3.h. (Windows SDK 10.0.10240.0 から抽出)
IUnknown │ ├─ID2D1Factory │ │ │ └─ID2D1Factory1 (1.1) │ │ │ └─ID2D1Factory2 (1.2) │ │ │ └─ID2D1Factory3 (1.3) │ │ │ └─ID2D1Factory4 (1.3) │ ├─ID2D1Resource │ │ │ ├─ID2D1Device (1.1) │ │ │ │ │ └─ID2D1Device1 (1.2) │ │ │ │ │ └─ID2D1Device2 (1.3) │ │ │ ├─ID2D1RenderTarget │ │ │ │ │ ├─ID2D1HwndRenderTarget │ │ │ │ │ ├─ID2D1DCRenderTarget │ │ │ │ │ ├─ID2D1BitmapRenderTarget │ │ │ │ │ └─ID2D1DeviceContext (1.1) │ │ │ │ │ └─ID2D1DeviceContext1 (1.2) │ │ │ │ │ └─ID2D1DeviceContext2 (1.3) │ │ │ ├─(Brush 関連インタフェース) │ │ │ │ │ ├─ID2D1Brush │ │ │ │ │ │ │ ├─ID2D1BitmapBrush │ │ │ │ │ │ │ │ │ └─ID2D1BitmapBrush1 (1.1) │ │ │ │ │ │ │ ├─ID2D1ImageBrush (1.1) │ │ │ │ │ │ │ ├─ID2D1LinearGradientBrush │ │ │ │ │ │ │ ├─ID2D1RadialGradientBrush │ │ │ │ │ │ │ └─ID2D1SolidColorBrush │ │ │ │ │ └─ID2D1GradientStopCollection │ │ │ │ │ └─ID2D1GradientStopCollection1 (1.1) │ │ │ ├─ID2D1Geometry │ │ │ │ │ ├─(単純図形 Simple Geometry) │ │ │ │ │ │ │ ├─ID2D1RectangleGeometry │ │ │ │ │ │ │ ├─ID2D1RoundedRectangleGeometry │ │ │ │ │ │ │ └─ID2D1EllipseGeometry │ │ │ │ │ ├─(パス図形 Path Geometry) │ │ │ │ │ │ │ └─ID2D1PathGeometry │ │ │ │ │ │ │ └─ID2D1PathGeometry1 (1.1) │ │ │ │ │ └─(複合図形 Composite Geometry) │ │ │ │ │ ├─ID2D1TransformedGeometry │ │ │ │ │ └─ID2D1GeometryGroup │ │ │ ├─ID2D1Layer │ │ │ ├─ID2D1Mesh │ │ │ ├─ID2D1Image │ │ │ │ │ ├─ID2D1Bitmap │ │ │ │ │ │ │ └─ID2D1Bitmap1 (1.1) │ │ │ │ │ ├─ID2D1ImageSource (1.3) │ │ │ │ │ │ │ └─ID2D1ImageSourceFromWic (1.3) │ │ │ │ │ ├─ID2D1TransformedImageSource (1.3) │ │ │ │ │ └─ID2D1CommandList (1.1) │ │ │ ├─ID2D1StrokeStyle │ │ │ │ │ └─ID2D1StrokeStyle1 (1.1) │ │ │ ├─ID2D1DrawingStateBlock │ │ │ │ │ └─ID2D1DrawingStateBlock1 (1.1) │ │ │ ├─ID2D1GdiMetafile (1.1) │ │ │ │ │ └─ID2D1GdiMetafile1 (1.3) │ │ │ ├─ID2D1ColorContext (1.1) │ │ │ ├─ID2D1GeometryRealization (1.2) │ │ │ ├─ID2D1Ink (1.3) │ │ │ ├─ID2D1InkStyle (1.3) │ │ │ ├─ID2D1GradientMesh (1.3) │ │ │ └─ID2D1LookupTable3D (1.3) │ ├─ID2D1GdiInteropRenderTarget │ ├─ID2D1SimplifiedGeometrySink │ │ │ └─ID2D1GeometrySink │ ├─ID2D1TessellationSink │ ├─ID2D1TransformGraph (1.1) │ ├─ID2D1TransformNode (1.1) │ │ │ ├─ID2D1BoundsAdjustmentTransform (1.1) │ │ │ ├─ID2D1ConcreteTransform (1.1) │ │ │ │ │ ├─ID2D1BlendTransform (1.1) │ │ │ │ │ └─ID2D1BorderTransform (1.1) │ │ │ ├─ID2D1OffsetTransform (1.1) │ │ │ └─ID2D1Transform (1.1) │ │ │ ├─ID2D1ComputeTransform (1.1) │ │ │ ├─ID2D1DrawTransform (1.1) │ │ │ └─ID2D1SourceTransform (1.1) │ ├─ID2D1AnalysisTransform (1.1) │ ├─ID2D1ResourceTexture (1.1) │ ├─ID2D1CommandSink (1.1) │ │ │ └─ID2D1CommandSink1 (1.2) │ │ │ └─ID2D1CommandSink2 (1.3) │ ├─ID2D1EffectContext (1.1) │ ├─ID2D1EffectImpl (1.1) │ ├─ID2D1GdiMetafileSink (1.1) │ │ │ └─ID2D1GdiMetafileSink1 (1.3) │ ├─ID2D1Multithread (1.1) │ ├─ID2D1PrintControl (1.1) │ ├─ID2D1Properties (1.1) │ │ │ └─ID2D1Effect (1.1) │ ├─ID2D1RenderInfo (1.1) │ │ │ ├─ID2D1ComputeInfo (1.1) │ │ │ └─ID2D1DrawInfo (1.1) │ └─ID2D1VertexBuffer (1.1)
Header Files:dwrite.h,dwrite_1.h,dwrite_2.h,dwrite_3.h. (Windows SDK 10.0.10240.0 から抽出)
IUnknown │ ├─IDWriteFactory │ │ │ └─IDWriteFactory1 (1.1) │ │ │ └─IDWriteFactory2 (1.2) │ │ │ └─IDWriteFactory3 (1.3) │ ├─IDWriteBitmapRenderTarget │ │ │ └─IDWriteBitmapRenderTarget1 (1.1) │ ├─IDWriteFont │ │ │ └─IDWriteFont1 (1.1) │ │ │ └─IDWriteFont2 (1.2) │ │ │ └─IDWriteFont3 (1.3) │ ├─IDWriteFontCollection │ │ │ └─IDWriteFontCollection1 (1.3) │ ├─IDWriteFontCollectionLoader │ ├─IDWriteFontFace │ │ │ └─IDWriteFontFace1 (1.1) │ │ │ └─IDWriteFontFace2 (1.2) │ │ │ └─IDWriteFontFace3 (1.3) │ ├─IDWriteFontFile │ ├─IDWriteFontFileEnumerator │ ├─IDWriteFontFileLoader │ │ │ └─IDWriteLocalFontFileLoader │ ├─IDWriteFontFileStream │ ├─IDWriteFontList │ │ │ ├─IDWriteFontList1 (1.3) │ │ │ └─IDWriteFontFamily │ │ │ └─IDWriteFontFamily1 (1.3) │ ├─IDWriteGdiInterop │ │ │ └─IDWriteGdiInterop1 (1.3) │ ├─IDWriteGeometrySink (=ID2D1SimplifiedGeometrySink) │ ├─IDWriteGlyphRunAnalysis │ ├─IDWriteInlineObject │ ├─IDWriteLocalizedStrings │ ├─IDWriteNumberSubstitution │ ├─IDWritePixelSnapping │ │ │ └─IDWriteTextRenderer │ │ │ └─IDWriteTextRenderer1 (1.2) │ ├─IDWriteRenderingParams │ │ │ └─IDWriteRenderingParams1 (1.1) │ │ │ └─IDWriteRenderingParams2 (1.2) │ │ │ └─IDWriteRenderingParams3 (1.3) │ ├─IDWriteTextAnalysisSink │ │ │ └─IDWriteTextAnalysisSink1 (1.1) │ ├─IDWriteTextAnalysisSource │ │ │ └─IDWriteTextAnalysisSource1 (1.1) │ ├─IDWriteTextAnalyzer │ │ │ └─IDWriteTextAnalyzer1 (1.1) │ │ │ └─IDWriteTextAnalyzer2 (1.2) │ ├─IDWriteTextFormat │ │ │ ├─IDWriteTextFormat1 (1.2) │ │ │ │ │ └─IDWriteTextFormat2 (1.3) │ │ │ └─IDWriteTextLayout │ │ │ └─IDWriteTextLayout1 (1.1) │ │ │ └─IDWriteTextLayout2 (1.2) │ │ │ └─IDWriteTextLayout3 (1.3) │ ├─IDWriteTypography │ ├─IDWriteFontFallback (1.2) │ ├─IDWriteFontFallbackBuilder (1.2) │ ├─IDWriteColorGlyphRunEnumerator (1.2) │ ├─IDWriteFontSet (1.3) │ ├─IDWriteFontSetBuilder (1.3) │ ├─IDWriteFontFaceReference (1.3) │ ├─IDWriteFontDownloadListener (1.3) │ ├─IDWriteFontDownloadQueue (1.3) │ └─IDWriteStringList (1.3)
Header Files:WinCodec.h,WinCodecSDK.h,(ObjIdlBase.h,ObjIdl.h).
IUnknown │ ├─IPersist │ │ │ └─IPersistStream │ │ │ └─IWICPersistStream │ ├─ISequentialStream │ │ │ └─IStream │ │ │ └─IWICStream │ ├─IWICBitmapCodecProgressNotification │ ├─IWICBitmapDecoder │ ├─IWICBitmapEncoder │ ├─IWICBitmapFrameEncode │ ├─IWICBitmapLock │ ├─IWICBitmapSource │ │ │ ├─IWICBitmap │ │ │ ├─IWICBitmapClipper │ │ │ ├─IWICBitmapFlipRotator │ │ │ ├─IWICBitmapFrameDecode │ │ │ │ │ └─IWICDevelopRaw │ │ │ ├─IWICBitmapScaler │ │ │ ├─IWICColorTransform │ │ │ └─IWICFormatConverter │ ├─IWICBitmapSourceTransform │ ├─IWICColorContext │ ├─IWICComponentInfo │ │ │ ├─IWICBitmapCodecInfo │ │ │ │ │ ├─IWICBitmapDecoderInfo │ │ │ │ │ └─IWICBitmapEncoderInfo │ │ │ ├─IWICFormatConverterInfo │ │ │ ├─IWICMetadataHandlerInfo │ │ │ │ │ ├─IWICMetadataReaderInfo │ │ │ │ │ └─IWICMetadataWriterInfo │ │ │ └─IWICPixelFormatInfo │ │ │ └─IWICPixelFormatInfo2 │ ├─IWICDevelopRawNotificationCallback │ ├─IWICEnumMetadataItem │ ├─IWICFastMetadataEncoder │ ├─IWICImageEncoder │ ├─IWICImagingFactory │ │ │ ├─IWICComponentFactory │ │ │ └─IWICImagingFactory2 │ ├─IWICMetadataBlockReader │ │ │ └─IWICMetadataBlockWriter │ ├─IWICMetadataQueryReader │ │ │ └─IWICMetadataQueryWriter │ ├─IWICMetadataReader │ │ │ └─IWICMetadataWriter │ ├─IWICPalette │ ├─IWICProgressCallback │ ├─IWICProgressiveLevelControl │ └─IWICStreamProvider
作成途中
参考:グラフィックス・パイプラインのブロック図 (MSDN)
注意:「入力組立段」は当サイトの勝手訳語.
(電子回路用語の入力段 (input stage) から.「段」はパイプライン処理の一つの処理要素を意味する.)
IA はユーザが与えたバッファからプリミティブデータ (点,線分,三角形) を読み取り,パイプラインの後続段が使用するプリミティブを組み立てる (assemble). 同時に,シェーダ効率化に役立てるため semantics (system-generated values) を割り当てる.
■参考
単一の頂点データの処理 (座標変換,スキニング,モーフィング,頂点ごとの照明計算など) を行う.
■参考
入力パッチ (四角形 (quad),三角形 (triangle),線分 (line)) ごとに呼び出され,それに対応する形状パッチ (geometry patch) およびパッチ定数 (patch constants) を生成する.
■参考
パッチ領域 (domain:四角,三角形,線分) を多くの小さなオブジェクト (三角形,線分,点) に細分割する.
■参考
細分割された出力パッチ内の頂点データを計算する.TS の出力点ごとに1回ずつ呼び出される.
■参考
VS が単一の頂点データを処理するのに対し,GS は単一のプリミティブ (三角形 (3頂点),線分 (2頂点),点 (1頂点)) を処理する.各プリミティブデータは隣接するプリミティブの頂点データを入力として含むことがある (図).
■参考
注意:「出力合成段」は当サイトの勝手訳語.
(電子回路用語の「出力段 (output stage)」) から.段 (stage) はパイプライン処理の一つの処理要素を意味する.)
■参考
Practical Rendering and Computation with Direct3D 11 posted with amazlet at 15.01.19 Jason Zink Matt Pettineo Jack Hoxley A K Peters/CRC Press 売り上げランキング: 71,070 「なか見!検索」で一部閲覧可能.Google Books では (画質はもっと悪いが) 第3章 "The Rendering Pipeline" の前半が読める. GPU アーキテクチャやパイプラインの動作についてかなり詳しく書いているようなので, 立ち読みして良さそうならば購入予定. |
SHADER GURU with Direct3D10/11(シェーダーを完全にマスターできる本) posted with amazlet at 13.05.26 鎌田 茂雄 Northbrain 売り上げランキング: 126,941 |
What | To / From | |
---|---|---|
Device | Device- Context |
|
FeatureLevel | Get | - |
(Device) CreationFlags | Get | - |
DeviceRemovedReason | Get | - |
ImmediateContext | Get | - |
ExceptionMode | Set / Get | - |
PrivateData | Set / Get | Set / Get |
PrivateDataInterface | Set | Set |
Device | - | Get |
(DeviceContext) Type | - | Get |
(GPU) Data | - | Get |
ResourceMinLOD | - | Set / Get |
Predication | - | Set / Get |
What | To / From | |||||
---|---|---|---|---|---|---|
VS | HS | DS | GS | PS | CS | |
Shader | Set / Get | Set / Get | Set / Get | Set / Get | Set / Get | Set / Get |
ShaderResources | Set / Get | Set / Get | Set / Get | Set / Get | Set / Get | Set / Get |
Samplers | Set / Get | Set / Get | Set / Get | Set / Get | Set / Get | Set / Get |
ConstantBuffers | Set / Get | Set / Get | Set / Get | Set / Get | Set / Get | Set / Get |
UnorderedAccessViews | - | - | - | - | - | Set / Get |
To/From | What | Setter/Getter |
---|---|---|
IA | VertexBuffers | Set / Get |
IndexBuffer | Set / Get | |
InputLayout | Set / Get | |
PrimitiveTopology | Set / Get | |
SO | Targets | Set / Get |
RS | State | Set / Get |
ScissorRects | Set / Get | |
Viewports | Set / Get | |
OM | BlendState | Set / Get |
DepthStencilState | Set / Get | |
RenderTargets | Set / Get | |
RenderTargetsAnd- UnorderedAccessViews |
Set / Get |
What | Setter/Getter |
---|---|
(Device) CreationFlags | Get |
DeviceRemovedReason | Get |
ExceptionMode | Set / Get |
PrivateData | Set / Get |
PrivateDataInterface | Set |
Predication | Set / Get |
What | To / From | ||
---|---|---|---|
VS | GS | PS | |
Shader | Set / Get | Set / Get | Set / Get |
ShaderResources | Set / Get | Set / Get | Set / Get |
Samplers | Set / Get | Set / Get | Set / Get |
ConstantBuffers | Set / Get | Set / Get | Set / Get |
To/From | What | Setter/Getter |
---|---|---|
IA | VertexBuffers | Set / Get |
IndexBuffer | Set / Get | |
InputLayout | Set / Get | |
PrimitiveTopology | Set / Get | |
RS | State | Set / Get |
ScissorRects | Set / Get | |
Viewports | Set / Get | |
OM | BlendState | Set / Get |
DepthStencilState | Set / Get | |
RenderTargets | Set / Get |
名前 | 型 (VCの型) |
説明 |
---|---|---|
POSITION[n] | float4 (float[4]) |
頂点座標 (vertex position) |
POSITIONT | float4 (float[4]) |
変換済頂点座標 (transformed vertex position) |
NORMAL[n] | float4 (float[4]) |
法線ベクトル (normal vector) |
BINORMAL[n] | float4 (float[4]) |
従法線ベクトル (binormal) |
TANGENT[n] | float4 (float[4]) |
接ベクトル (tangent) |
PSIZE[n] | float | 点の大きさ (point size) |
COLOR[n] | float4 (float[4]) |
拡散色 (diffuse) または鏡面色 (specular) |
TEXCOORD[n] | float4 (float[4]) |
テクスチャ座標 (texture coordinates) |
BLENDINDICES[n] | uint (DWORD) |
頂点ブレンドのインデックス (blend indices) |
BLENDWEIGHT[n] | float | 頂点ブレンドの重み (blend weight) |
名前 | 型 (VCの型) |
説明 |
---|---|---|
POSITION[n] | float4 (float[4]) |
頂点の同次座標 (position of a vertex in homogeneous space) |
COLOR[n] | float4 (float[4]) |
拡散色 (diffuse) または鏡面色 (specular) |
TEXCOORD[n] | float4 (float[4]) |
テクスチャ座標 (texture coordinates) |
PSIZE[n] | float | 点の大きさ (point size) |
FOG | float | 頂点フォグ (vertex fog) |
TESSFACTOR[n] | float | テセレーション因子 (tessellation factor) |
名前 | 型 (VCの型) |
説明 |
---|---|---|
COLOR[n] | float4 (float[4]) |
拡散色 (diffuse) または鏡面色 (specular) |
TEXCOORD[n] | float4 (float[4]) |
テクスチャ座標 (texture coordinates) |
VPOS | float2 (float[2]) |
スクリーン上の画素座標 (x, y). |
VFACE | float | プリミティブの面の表と裏のどちらが見えているのかを示す.
正ならば表,負ならば裏. (たぶん画面に投影した後の符号付面積.(未確認の憶測)) |
名前 | 型 (VCの型) |
説明 |
---|---|---|
COLOR[n] | float4 (float[4]) |
出力色 (output color) |
DEPTH[n] | float | 出力深度 (output depth) |
作成途中
原則として,パイプライン内での出現順に並べている.
名前 | 型 (VCの型) |
説明 | パイプライン内での入出力 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
IA | VS | HS | TS | DS | GS | RS | PS | OM | CS | |||
SV_VertexID | uint (DWORD) |
IAがプリミティブを処理する時に割り当てる頂点ID. デフォルト値は0.Draw 命令ごとに1増える.232-1 を超えると0に戻る. | O | I | - | - | - | - | I | - | - | - |
SV_InstanceID | uint (DWORD) |
IAが自動生成するインスタンスID.デフォルト値は0.Indexed draw 命令ごとに1増える.その他の描画命令では変化しない.232-1 を超えると0に戻る. | O | I | - | - | - | - | I | - | - | - |
SV_Position | float4 (float[4]) |
・VS/GS入出力,RS入力の場合:頂点の位置座標. | O | I/O | - | - | - | I/O | I | - | - | - |
・RS出力,PS入力の場合:画素の位置座標を表す.整数値は画素の境界,小数部が0.5ならば画素の中心 (参考).補間モデルは LinearNoPerspective と LinearNoPerspectiveCentroid のいずれかを選択可能.後者は MSAA 処理時に,重心位置の xyzw 座標を使用する. | - | - | - | - | - | - | O | I | - | - | ||
SV_ClipDistance[n] | float | クリップ平面 (clip plane) までの符号付距離.この値が非負のときに限りラスタ化される.
頂点データの一つ以上の要素を SV_ |
- | O | - | - | - | O | I | - | - | - |
SV_CullDistance[n] | float | カリング平面 (cull plane) までの符号付距離.
プリミティブのすべての頂点のカリング距離が負ならば,そのプリミティブはラスタ化されない.
頂点データの一つ以上の要素を SV_ |
- | O | - | - | - | O | I | - | - | - |
SV_TessFactor | float[2|3|4] | (辺)テセレーション因子 (tesselation factor).曲面パッチ (patch surface)
の各辺に対するテセレーション量 (tessellation amount).分割数らしいので,1の場合はテセレーション不要.
0の場合はプリミティブがカリングされる. |
- | - | O | I | I | - | - | - | - | - |
SV_InsideTessFactor | float|float[2] | 内部テセレーション因子.曲面パッチの内部領域のテセレーション量.
|
- | - | O | I | I | - | - | - | - | - |
SV_DomainLocation | float2|3 (float[2|3]) |
領域 (domain) 内での現在計算 (evaluate) 中の点の,パッチ (hull) 上での位置. | - | - | - | O | I | - | - | - | - | - |
SV_OutputControlPointID | uint (DWORD) |
HSが処理中の制御点 (control point) のID. | - | - | O | I? | I? | - | - | - | - | - |
SV_GSInstanceID | uint (DWORD) |
GSのインスタンスID. | O | - | - | - | - | I | I | - | - | - |
SV_PrimitiveID | uint (DWORD) |
IAが自動生成するプリミティブID. 新しいインスタンスの描画を開始するたびに0にリセットされ,Indexed draw 命令ごとに1増える.その他の描画命令では変化しない.232-1 を超えると0に戻る. | O | - | - | - | - | I | I | I | - | - |
SV_ViewportArrayIndex | uint (DWORD) |
ID3D11DeviceContext::RSSetViewports()
で設定したViewport配列のインデックス.現在のプリミティブは指定された |
- | - | - | - | - | O | I | - | - | - |
SV_RenderTargetArrayIndex | uint (DWORD) |
描画先 (render target) 配列のインデックス (描画先が配列リソース |
- | - | - | - | - | O | I? | I/O | - | - |
SV_IsFrontFace | bool (BOOL) |
線分および点では真. | - | - | - | - | - | - | I | I | - | - |
SV_Target[n] (0≦n≦7) |
float | PSが描画先 (render target) に書き込む画素値.インデックスは書き込む描画先を指定する. | - | - | - | - | - | - | I/O | O | - | - |
SV_Depth | float | 深度バッファデータ. |
- | - | - | - | - | - | I/O | O | - | - |
SV_GroupID | uint3 (DWORD[3]) |
- | - | - | - | - | - | - | - | - | I | |
SV_GroupIndex | uint (DWORD) |
- | - | - | - | - | - | - | - | - | I | |
SV_DispatchThreadID | uint3 (DWORD[3]) |
- | - | - | - | - | - | - | - | - | I | SV_GroupThreadID | uint3 (DWORD[3]) |
- | - | - | - | - | - | - | - | - | I |
SV_SampleIndex | uint (DWORD) |
サンプリング頻度インデックス. | - | - | - | - | - | - | I/O | - | - | - |
SV_Coverage | uint (DWORD) |
参考 | - | - | - | - | - | - | I/O (*1) |
- | - | - |
名前 | 型 (VCの型) |
説明 | IA | VS | HS | TS | DS | GS | RS | PS | OM | CS |
パイプライン内での入出力 |
(*1) 出力は ps_4_1 以降,入力は ps_5_0 以降.
サンプル "Multi-Sample Anti-Aliasing in Direct 2D" を参考に,MSAA を使用する方法をまとめてみた.
if(MultisampleEnable) { 四角形線分 (quadrilateral line) AA アルゴリズムを使用する. (線分を四角形として描画するという意味らしい.) } else if(FeatureLevel ≦ 10.0) { (たとえ MSAA 描画先であっても) すべての点,線分,三角形を AA なしで描画する. } else { // FeatureLevel≧10.1 (線分描画にのみ影響し,点や三角形には影響しない.) if(AntialiasedLineEnable) { 線分描画に alpha line AA アルゴリズムを使用する. (線分画素のアルファ成分を調整して AA を行うという意味か?) } else { 線分描画に AA を使用しない. } }
The DirectX Tool Kit (aka DirectXTK) is a collection of helper classes for writing Direct3D 11 code in C++.
DirectXTex, a shared source library for reading and writing DDS files, and performing various texture content processing operations including resizing, format conversion, mip-map generation, block compression for Direct3D runtime texture resources, and height-map to normal-map conversion. This library makes use of the Windows Image Component (WIC) APIs. It also includes a simple .TGA reader and writer since this image file format is commonly used for texture content processing pipelines, but is not currently supported by a built-in WIC codec.
A blog which discusses various GPU applications including visualization, GPGPU and games.
Note For Direct2D and DirectWrite interoperability on the DirectX 11.1 runtime, you can use Direct2D devices and device contexts to render directly to Direct3D 11 devices.
Copyright © 2012-2020 noocyte. E-mail: relipmoced (a) yahoo.co.jp (" (a) " を半角のアットマークに書き替えてください.) リンクはご自由に. 「Windows Programming Tips & Memos」に戻る. 「noocyte のプログラミング研究室」トップページに戻る. |