Win32 API 日本語リファレンス
ホームGraphics.Direct3D11 › ID3D11Device

ID3D11Device

COM
IIDdb6f6ddb-ac77-4e88-8253-819df9bbf140継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

デバイスインターフェイスは仮想アダプターを表し、リソースの作成に使用します。

解説(Remarks)

デバイスは D3D11CreateDevice を使用して作成します。

Windows Phone 8: この API はサポートされています。

メソッド 40

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT CreateBuffer(D3D11_BUFFER_DESC* pDesc, D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Buffer** ppBuffer)

バッファー(頂点バッファー、インデックスバッファー、またはシェーダー定数バッファー)を作成します。

pDescD3D11_BUFFER_DESC*inバッファーを記述する D3D11_BUFFER_DESC 構造体へのポインター。
pInitialDataD3D11_SUBRESOURCE_DATA*inoptional

初期化データを記述する D3D11_SUBRESOURCE_DATA 構造体へのポインター。 領域の確保のみを行う場合は NULL を指定します(ただし usage フラグが D3D11_USAGE_IMMUTABLE の場合は NULL にできません)。

pInitialData に何も渡さない場合、バッファーのメモリの初期内容は未定義です。 この場合、リソースが読み取られる前に何らかの別の方法でバッファーの内容を書き込む必要があります。

ppBufferID3D11Buffer**outoptional作成されたバッファーオブジェクトの ID3D11Buffer インターフェイスへのポインターのアドレス。 このパラメーターに NULL を設定すると、他の入力パラメーターの検証のみを行います(S_FALSE は検証に成功したことを示します)。

戻り値

型: HRESULT

バッファーを作成するためのメモリが不足している場合、このメソッドは E_OUTOFMEMORY を返します。 その他の戻り値については Direct3D 11 の戻り値 を参照してください。

解説(Remarks)

サンプルコードについては、頂点バッファーの作成方法インデックスバッファーの作成方法定数バッファーの作成方法 を参照してください。

定数バッファー(D3D11_BUFFER_DESCBindFlagsD3D11_BIND_CONSTANT_BUFFER を設定したもの)の場合、 D3D11_BUFFER_DESCByteWidth の値は 16 の倍数で、かつ D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT 以下に設定する必要があります。

Windows 8 以降のオペレーティングシステムで利用できる Direct3D 11.1 ランタイムは、CreateBuffer に次の新しい機能を提供します。

シェーダーがアクセスできる定数バッファーの最大サイズ(4096 個の 32 ビット×4 成分の定数 - 64KB)を超える定数バッファーを作成できます。 定数バッファーをパイプラインにバインドするとき(たとえば PSSetConstantBuffersPSSetConstantBuffers1 経由)、 4096 定数の制限に収まる範囲でシェーダーがアクセスできるバッファーの範囲を定義できます。

Direct3D 11.1 ランタイム(Windows 8 以降のオペレーティングシステムで利用可能)は、機能レベル 9.1、9.2、9.3 に対してこの機能をエミュレートします。したがって、この機能は機能レベル 9.1、9.2、9.3 でサポートされます。

この機能は、機能レベル 10 以上の新しいドライバーでは常に利用できます。

Direct3D 11.1 より古いランタイムでは、4096 を超える定数バッファーを要求する CreateBuffer の呼び出しは失敗します。

vtbl 4 HRESULT CreateTexture1D(D3D11_TEXTURE1D_DESC* pDesc, D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Texture1D** ppTexture1D)

1D テクスチャの配列を作成します。

pDescD3D11_TEXTURE1D_DESC*in1D テクスチャリソースを記述する D3D11_TEXTURE1D_DESC 構造体へのポインター。実行時に互換性のある異なるフォーマットとして解釈できる型なし(typeless)リソースを作成するには、テクスチャ記述に型なしフォーマットを指定します。ミップマップレベルを自動生成するには、ミップマップレベル数を 0 に設定します。
pInitialDataD3D11_SUBRESOURCE_DATA*inoptional

1D テクスチャリソースのサブリソースを記述する D3D11_SUBRESOURCE_DATA 構造体の配列へのポインター。IMMUTABLE リソースを作成する場合、アプリケーションは pInitialDataNULL を指定できません(D3D11_USAGE を参照)。リソースがマルチサンプリングされている場合、マルチサンプルリソースは作成時にデータで初期化できないため、pInitialDataNULL でなければなりません。

pInitialData に何も渡さない場合、リソースのメモリの初期内容は未定義です。この場合、リソースが読み取られる前に何らかの別の方法でリソースの内容を書き込む必要があります。

この配列のサイズは、pDesc が指す D3D11_TEXTURE1D_DESC 構造体の MipLevels メンバーと ArraySize メンバーの値から、次の計算で求められます。

MipLevels * ArraySize

この配列サイズの詳細については、「解説」を参照してください。

ppTexture1DID3D11Texture1D**outoptional作成されたテクスチャの ID3D11Texture1D インターフェイスへのポインターを受け取るバッファーへのポインター。このパラメーターに NULL を設定すると、他の入力パラメーターの検証のみを行います(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。

戻り値

型: HRESULT

メソッドが成功した場合、戻り値は S_OK です。失敗時のエラーコードについては Direct3D 11 の戻り値 を参照してください。

解説(Remarks)

CreateTexture1D は、複数の 1D サブリソースを含むことができる 1D テクスチャリソースを作成します。テクスチャの数はテクスチャ記述で指定します。1 つのリソース内のすべてのテクスチャは、同じフォーマット、サイズ、ミップマップレベル数を持つ必要があります。

すべてのリソースは 1 つ以上のサブリソースで構成されます。テクスチャにデータを読み込むには、アプリケーションは pInitialData が指す D3D11_SUBRESOURCE_DATA 構造体の配列として初期データを与えるか、D3DX11CreateTextureFromFile などの D3DX テクスチャ関数を使用できます。

完全なミップマップチェーンを持つ幅 32 のテクスチャの場合、pInitialData 配列は次の 6 個の要素を持ちます。

vtbl 5 HRESULT CreateTexture2D(D3D11_TEXTURE2D_DESC* pDesc, D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Texture2D** ppTexture2D)

2D テクスチャの配列を作成します。

pDescD3D11_TEXTURE2D_DESC*in2D テクスチャリソースを記述する D3D11_TEXTURE2D_DESC 構造体へのポインター。実行時に互換性のある異なるフォーマットとして解釈できる型なし(typeless)リソースを作成するには、テクスチャ記述に型なしフォーマットを指定します。ミップマップレベルを自動生成するには、ミップマップレベル数を 0 に設定します。
pInitialDataD3D11_SUBRESOURCE_DATA*inoptional

2D テクスチャリソースのサブリソースを記述する D3D11_SUBRESOURCE_DATA 構造体の配列へのポインター。IMMUTABLE リソースを作成する場合、アプリケーションは pInitialDataNULL を指定できません(D3D11_USAGE を参照)。リソースがマルチサンプリングされている場合、マルチサンプルリソースは作成時にデータで初期化できないため、pInitialDataNULL でなければなりません。

pInitialData に何も渡さない場合、リソースのメモリの初期内容は未定義です。この場合、リソースが読み取られる前に何らかの別の方法でリソースの内容を書き込む必要があります。

この配列のサイズは、pDesc が指す D3D11_TEXTURE2D_DESC 構造体の MipLevels メンバーと ArraySize メンバーの値から、次の計算で求められます。

MipLevels * ArraySize

この配列サイズの詳細については、「解説」を参照してください。

ppTexture2DID3D11Texture2D**outoptional作成されたテクスチャの ID3D11Texture2D インターフェイスへのポインターを受け取るバッファーへのポインター。このパラメーターに NULL を設定すると、他の入力パラメーターの検証のみを行います(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。

戻り値

型: HRESULT

メソッドが成功した場合、戻り値は S_OK です。失敗時のエラーコードについては Direct3D 11 の戻り値 を参照してください。

解説(Remarks)

CreateTexture2D は、複数の 2D サブリソースを含むことができる 2D テクスチャリソースを作成します。テクスチャの数はテクスチャ記述で指定します。1 つのリソース内のすべてのテクスチャは、同じフォーマット、サイズ、ミップマップレベル数を持つ必要があります。

すべてのリソースは 1 つ以上のサブリソースで構成されます。テクスチャにデータを読み込むには、アプリケーションは pInitialData が指す D3D11_SUBRESOURCE_DATA 構造体の配列として初期データを与えるか、D3DX11CreateTextureFromFile などの D3DX テクスチャ関数を使用できます。

完全なミップマップチェーンを持つ 32 x 32 のテクスチャの場合、pInitialData 配列は次の 6 個の要素を持ちます。

vtbl 6 HRESULT CreateTexture3D(D3D11_TEXTURE3D_DESC* pDesc, D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Texture3D** ppTexture3D)

単一の 3D テクスチャを作成します。

pDescD3D11_TEXTURE3D_DESC*in3D テクスチャリソースを記述する D3D11_TEXTURE3D_DESC 構造体へのポインター。実行時に互換性のある異なるフォーマットとして解釈できる型なし(typeless)リソースを作成するには、テクスチャ記述に型なしフォーマットを指定します。ミップマップレベルを自動生成するには、ミップマップレベル数を 0 に設定します。
pInitialDataD3D11_SUBRESOURCE_DATA*inoptional

3D テクスチャリソースのサブリソースを記述する D3D11_SUBRESOURCE_DATA 構造体の配列へのポインター。IMMUTABLE リソースを作成する場合、アプリケーションは pInitialDataNULL を指定できません(D3D11_USAGE を参照)。リソースがマルチサンプリングされている場合、マルチサンプルリソースは作成時にデータで初期化できないため、pInitialDataNULL でなければなりません。

pInitialData に何も渡さない場合、リソースのメモリの初期内容は未定義です。この場合、リソースが読み取られる前に何らかの別の方法でリソースの内容を書き込む必要があります。

この配列のサイズは、pDesc が指す D3D11_TEXTURE3D_DESC 構造体の MipLevels メンバーの値から求められます。3D ボリュームテクスチャの配列はサポートされていません。

この配列サイズの詳細については、「解説」を参照してください。

ppTexture3DID3D11Texture3D**outoptional作成されたテクスチャの ID3D11Texture3D インターフェイスへのポインターを受け取るバッファーへのポインター。このパラメーターに NULL を設定すると、他の入力パラメーターの検証のみを行います(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。

戻り値

型: HRESULT

メソッドが成功した場合、戻り値は S_OK です。失敗時のエラーコードについては Direct3D 11 の戻り値 を参照してください。

解説(Remarks)

CreateTexture3D は、複数の 3D サブリソースを含むことができる 3D テクスチャリソースを作成します。テクスチャの数はテクスチャ記述で指定します。1 つのリソース内のすべてのテクスチャは、同じフォーマット、サイズ、ミップマップレベル数を持つ必要があります。

すべてのリソースは 1 つ以上のサブリソースで構成されます。テクスチャにデータを読み込むには、アプリケーションは pInitialData が指す D3D11_SUBRESOURCE_DATA 構造体の配列として初期データを与えるか、D3DX11CreateTextureFromFile などの D3DX テクスチャ関数を使用できます。

pInitialData の各要素は、対象のミップレベルに定義されたすべてのスライスを提供します。たとえば、完全なミップマップチェーンを持つ 32 x 32 x 4 のボリュームテクスチャの場合、配列は次の 6 個の要素を持ちます。

vtbl 7 HRESULT CreateShaderResourceView(ID3D11Resource* pResource, D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc, ID3D11ShaderResourceView** ppSRView)

リソース内のデータにアクセスするためのシェーダーリソースビューを作成します。(ID3D11Device.CreateShaderResourceView)

pResourceID3D11Resource*inシェーダーへの入力となるリソースへのポインター。このリソースは D3D11_BIND_SHADER_RESOURCE フラグを指定して作成されている必要があります。
pDescD3D11_SHADER_RESOURCE_VIEW_DESC*inoptionalシェーダーリソースビューの記述(D3D11_SHADER_RESOURCE_VIEW_DESC を参照)へのポインター。リソース全体にアクセスするビューを作成するには、このパラメーターに NULL を設定します(リソースの作成時のフォーマットが使用されます)。
ppSRViewID3D11ShaderResourceView**outoptionalID3D11ShaderResourceView へのポインターのアドレス。このパラメーターに NULL を設定すると、他の入力パラメーターの検証のみを行います(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

リソースは 1 つ以上のサブリソースで構成され、ビューはパイプラインがアクセスできるサブリソースを指定します。さらに、各リソースはビューを使用してパイプラインにバインドされます。シェーダーリソースビューは、次の API メソッドを使用して任意のバッファーまたはテクスチャリソースをシェーダーステージにバインドするために設計されています: ID3D11DeviceContext::VSSetShaderResourcesID3D11DeviceContext::GSSetShaderResourcesID3D11DeviceContext::PSSetShaderResources

ビューは完全に型付けされているため、型なしリソースはパイプラインにバインドされると完全に型付けされたものになります。

メモ 型なしバッファー(たとえば DXGI_FORMAT_R32G32B32A32_TYPELESS)からシェーダーリソースビューを正しく作成するには、バッファーの作成時に D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS フラグを設定する必要があります。
Windows 8 以降で利用できる Direct3D 11.1 ランタイムでは、CreateShaderResourceView を次の新しい目的で使用できます。

Direct3D シェーダーがビデオリソースを処理できるように、ビデオリソースのシェーダーリソースビューを作成できます。これらのビデオリソースは Texture2D または Texture2DArray のいずれかです。作成するシェーダーリソースビューの D3D11_SHADER_RESOURCE_VIEW_DESC 構造体の ViewDimension メンバーの値は、ビデオリソースの種類と一致している必要があります。すなわち Texture2D には D3D11_SRV_DIMENSION_TEXTURE2D を、Texture2DArray には D3D11_SRV_DIMENSION_TEXTURE2DARRAY を指定します。さらに、基となるビデオリソースのフォーマットによって、ビューが使用できるフォーマットが制限されます。ビューが使用できるフォーマット値については、DXGI_FORMAT のリファレンスページにあるビデオリソースフォーマットの値を参照してください。

ランタイムの読み取り+書き込み競合防止ロジック(リソースが SRV と RTV または UAV として同時にバインドされることを防ぐ機構)は、簡略化のため、同一のビデオサーフェスの異なる部分に対するビューを競合として扱います。そのため、ハードウェアがこれらの同時操作を許容する場合でも、ランタイムは同一サーフェス内で luma からの読み取りと chroma へのレンダリングを同時に行うことをアプリケーションに許可しません。

Windows Phone 8: この API はサポートされています。

vtbl 8 HRESULT CreateUnorderedAccessView(ID3D11Resource* pResource, D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc, ID3D11UnorderedAccessView** ppUAView)

アンオーダードアクセスリソースにアクセスするためのビューを作成します。(ID3D11Device.CreateUnorderedAccessView)

pResourceID3D11Resource*inシェーダーへの入力となるリソースを表す ID3D11Resource へのポインター。
pDescD3D11_UNORDERED_ACCESS_VIEW_DESC*inoptionalシェーダーリソースビューの記述を表す D3D11_UNORDERED_ACCESS_VIEW_DESC へのポインター。リソース全体にアクセスするビューを作成するには、このパラメーターに NULL を設定します(リソースの作成時のフォーマットが使用されます)。
ppUAViewID3D11UnorderedAccessView**outoptionalアンオーダードアクセスビューを表す ID3D11UnorderedAccessView へのポインターのアドレス。このパラメーターに NULL を設定すると、他の入力パラメーターの検証のみを行います(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。

戻り値

型: HRESULT

このメソッドは、Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

Windows 8 以降で利用できる Direct3D 11.1 ランタイムでは、CreateUnorderedAccessView を次の新しい目的で使用できます。

Direct3D シェーダーがビデオリソースを処理できるように、ビデオリソースのアンオーダードアクセスビューを作成できます。これらのビデオリソースは Texture2D または Texture2DArray のいずれかです。作成するアンオーダードアクセスビューの D3D11_UNORDERED_ACCESS_VIEW_DESC 構造体の ViewDimension メンバーの値は、ビデオリソースの種類と一致している必要があります。すなわち Texture2D には D3D11_UAV_DIMENSION_TEXTURE2D を、Texture2DArray には D3D11_UAV_DIMENSION_TEXTURE2DARRAY を指定します。さらに、基となるビデオリソースのフォーマットによって、ビューが使用できるフォーマットが制限されます。ビューが使用できるフォーマット値については、DXGI_FORMAT のリファレンスページにあるビデオリソースフォーマットの値を参照してください。

ランタイムの読み取り+書き込み競合防止ロジック(リソースが SRV と RTV または UAV として同時にバインドされることを防ぐ機構)は、簡略化のため、同一のビデオサーフェスの異なる部分に対するビューを競合として扱います。そのため、ハードウェアがこれらの同時操作を許容する場合でも、ランタイムは同一サーフェス内で luma からの読み取りと chroma へのレンダリングを同時に行うことをアプリケーションに許可しません。

vtbl 9 HRESULT CreateRenderTargetView(ID3D11Resource* pResource, D3D11_RENDER_TARGET_VIEW_DESC* pDesc, ID3D11RenderTargetView** ppRTView)

リソースデータにアクセスするためのレンダーターゲットビューを作成します。(ID3D11Device.CreateRenderTargetView)

pResourceID3D11Resource*inレンダーターゲットを表す ID3D11Resource へのポインター。このリソースは D3D11_BIND_RENDER_TARGET フラグを指定して作成されている必要があります。
pDescD3D11_RENDER_TARGET_VIEW_DESC*inoptionalレンダーターゲットビューの記述を表す D3D11_RENDER_TARGET_VIEW_DESC へのポインター。ミップマップレベル 0 のすべてのサブリソースにアクセスするビューを作成するには、このパラメーターに NULL を設定します。
ppRTViewID3D11RenderTargetView**outoptionalID3D11RenderTargetView へのポインターのアドレス。このパラメーターに NULL を設定すると、他の入力パラメーターの検証のみを行います(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。

戻り値

型: HRESULT

このメソッドは、Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

レンダーターゲットビューは、ID3D11DeviceContext::OMSetRenderTargets を呼び出すことで出力マージャーステージにバインドできます。

Windows 8 以降で利用できる Direct3D 11.1 ランタイムでは、CreateRenderTargetView を次の新しい目的で使用できます。

Direct3D シェーダーがビデオリソースを処理できるように、ビデオリソースのレンダーターゲットビューを作成できます。これらのビデオリソースは Texture2D または Texture2DArray のいずれかです。作成するレンダーターゲットビューの D3D11_RENDER_TARGET_VIEW_DESC 構造体の ViewDimension メンバーの値は、ビデオリソースの種類と一致している必要があります。すなわち Texture2D には D3D11_RTV_DIMENSION_TEXTURE2D を、Texture2DArray には D3D11_RTV_DIMENSION_TEXTURE2DARRAY を指定します。さらに、基となるビデオリソースのフォーマットによって、ビューが使用できるフォーマットが制限されます。ビューが使用できるフォーマット値については、DXGI_FORMAT のリファレンスページにあるビデオリソースフォーマットの値を参照してください。

ランタイムの読み取り+書き込み競合防止ロジック(リソースが SRV と RTV または UAV として同時にバインドされることを防ぐ機構)は、簡略化のため、同一のビデオサーフェスの異なる部分に対するビューを競合として扱います。そのため、ハードウェアがこれらの同時操作を許容する場合でも、ランタイムは同一サーフェス内で luma からの読み取りと chroma へのレンダリングを同時に行うことをアプリケーションに許可しません。

vtbl 10 HRESULT CreateDepthStencilView(ID3D11Resource* pResource, D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc, ID3D11DepthStencilView** ppDepthStencilView)

リソースデータにアクセスするための深度ステンシルビューを作成します。(ID3D11Device.CreateDepthStencilView)

pResourceID3D11Resource*in深度ステンシルサーフェスとなるリソースへのポインター。このリソースは D3D11_BIND_DEPTH_STENCIL フラグを指定して作成されている必要があります。
pDescD3D11_DEPTH_STENCIL_VIEW_DESC*inoptional深度ステンシルビューの記述(D3D11_DEPTH_STENCIL_VIEW_DESC を参照)へのポインター。リソース全体のミップマップレベル 0 にアクセスするビューを作成するには、このパラメーターに NULL を設定します(リソースの作成時のフォーマットが使用されます)。
ppDepthStencilViewID3D11DepthStencilView**outoptionalID3D11DepthStencilView へのポインターのアドレス。このパラメーターに NULL を設定すると、他の入力パラメーターの検証のみを行います(他の入力パラメーターが検証に合格した場合、メソッドは S_FALSE を返します)。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

深度ステンシルビューは、ID3D11DeviceContext::OMSetRenderTargets を呼び出すことで出力マージャーステージにバインドできます。

vtbl 11 HRESULT CreateInputLayout(D3D11_INPUT_ELEMENT_DESC* pInputElementDescs, DWORD NumElements, void* pShaderBytecodeWithInputSignature, UINT_PTR BytecodeLength, ID3D11InputLayout** ppInputLayout)

入力アセンブラーステージの入力バッファーデータを記述する入力レイアウトオブジェクトを作成します。(ID3D11Device.CreateInputLayout)

pInputElementDescsD3D11_INPUT_ELEMENT_DESC*in入力アセンブラーステージの入力データ型の配列。各型は要素記述(D3D11_INPUT_ELEMENT_DESC を参照)で記述されます。
NumElementsDWORDin入力要素の配列に含まれる入力データ型の数。
pShaderBytecodeWithInputSignaturevoid*inコンパイル済みシェーダーへのポインター。コンパイル済みシェーダーコードには入力シグネチャが含まれており、要素の配列に対して検証されます。「解説」を参照してください。
BytecodeLengthUINT_PTRinコンパイル済みシェーダーのサイズ。
ppInputLayoutID3D11InputLayout**outoptional作成された入力レイアウトオブジェクト(ID3D11InputLayout を参照)へのポインター。他の入力パラメーターを検証するには、このポインターを NULL に設定し、メソッドが S_FALSE を返すことを確認します。

戻り値

型: HRESULT

メソッドが成功した場合、戻り値は S_OK です。失敗時のエラーコードについては Direct3D 11 の戻り値 を参照してください。

解説(Remarks)

入力レイアウトオブジェクトを作成した後、描画 API を呼び出す前に入力アセンブラーステージにバインドする必要があります。

シェーダーシグネチャから入力レイアウトオブジェクトをいったん作成すれば、その入力レイアウトオブジェクトは同一の入力シグネチャ(セマンティクスを含む)を持つ他のシェーダーでも再利用できます。これにより、入力が同一の多数のシェーダーを扱う場合に、入力レイアウトオブジェクトの作成を簡素化できます。

入力レイアウト宣言のデータ型がシェーダー入力シグネチャのデータ型と一致しない場合、CreateInputLayout はコンパイル時に警告を生成します。この警告は、レジスターから読み取る際にデータが再解釈される可能性があることに注意を促すためのものです。再解釈が意図的であればこの警告は無視できますし、両方の宣言のデータ型を一致させて警告を解消することもできます。

Windows Phone 8: この API はサポートされています。

vtbl 12 HRESULT CreateVertexShader(void* pShaderBytecode, UINT_PTR BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11VertexShader** ppVertexShader)

コンパイル済みシェーダーから頂点シェーダーオブジェクトを作成します。(ID3D11Device.CreateVertexShader)

pShaderBytecodevoid*inコンパイル済みシェーダーへのポインター。
BytecodeLengthUINT_PTRinコンパイル済み頂点シェーダーのサイズ。
pClassLinkageID3D11ClassLinkage*inoptionalクラスリンケージインターフェイス(ID3D11ClassLinkage を参照)へのポインター。NULL を指定できます。
ppVertexShaderID3D11VertexShader**outoptionalID3D11VertexShader インターフェイスへのポインターのアドレス。NULL の場合、他のすべてのパラメーターが検証され、すべてのパラメーターが検証に合格すると、この API は S_OK ではなく S_FALSE を返します。

戻り値

型: HRESULT

このメソッドは、Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

Windows 8 以降で利用できる Direct3D 11.1 ランタイムは、CreateVertexShader に次の新しい機能を提供します。

次のシェーダーモデル 5.0 命令は、Direct3D 11.0 ランタイムではピクセルシェーダーとコンピュートシェーダーでのみ使用できます。Direct3D 11.1 ランタイムでは、アンオーダードアクセスビュー(UAV)がすべてのシェーダーステージで利用できるため、これらの命令をすべてのシェーダーステージで使用できます。

したがって、次のシェーダーモデル 5.0 命令を頂点シェーダーで使用した場合でも、コンパイル済みの頂点シェーダーを pShaderBytecode に渡すことができます。つまり、CreateVertexShader の呼び出しは成功します。

すべてのシェーダーステージで UAV をサポートしないデバイス(すべてのシェーダーステージでの UAV サポートが実装されていない既存のドライバーを含む)において、次のいずれかの命令を使用するコンパイル済みシェーダーを pShaderBytecode に渡すと、CreateVertexShader は失敗します。また、ハードウェアがサポートする UAV スロットの範囲を超えて UAV スロットを使用しようとするシェーダーの場合も、CreateVertexShader は失敗します。

vtbl 13 HRESULT CreateGeometryShader(void* pShaderBytecode, UINT_PTR BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11GeometryShader** ppGeometryShader)

ジオメトリシェーダーを作成します。(ID3D11Device.CreateGeometryShader)

pShaderBytecodevoid*inコンパイル済みシェーダーへのポインター。
BytecodeLengthUINT_PTRinコンパイル済みジオメトリシェーダーのサイズ。
pClassLinkageID3D11ClassLinkage*inoptionalクラスリンケージインターフェイス(ID3D11ClassLinkage を参照)へのポインター。NULL を指定できます。
ppGeometryShaderID3D11GeometryShader**outoptionalID3D11GeometryShader インターフェイスへのポインターのアドレス。NULL の場合、他のすべてのパラメーターが検証され、すべての パラメーターが検証に合格すると、この API は S_OK ではなく S_FALSE を返します。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

作成後、ID3D11DeviceContext::GSSetShader を呼び出してシェーダーをデバイスに設定できます。

Windows 8 以降で利用できる Direct3D 11.1 ランタイムは、CreateGeometryShader に次の新しい機能を提供します。

次のシェーダーモデル 5.0 命令は、Direct3D 11.0 ランタイムではピクセルシェーダーとコンピュートシェーダーでのみ使用できます。Direct3D 11.1 ランタイムでは、アンオーダードアクセスビュー(UAV)がすべてのシェーダーステージで利用できるため、これらの命令をすべてのシェーダーステージで使用できます。

したがって、次のシェーダーモデル 5.0 命令をジオメトリシェーダーで使用した場合でも、コンパイル済みのジオメトリシェーダーを pShaderBytecode に渡すことができます。つまり、CreateGeometryShader の呼び出しは成功します。

すべてのシェーダーステージで UAV をサポートしないデバイス(すべてのシェーダーステージでの UAV サポートが実装されていない既存のドライバーを含む)において、次のいずれかの命令を使用するコンパイル済みシェーダーを pShaderBytecode に渡すと、CreateGeometryShader は失敗します。また、ハードウェアがサポートする UAV スロットの範囲を超えて UAV スロットを使用しようとするシェーダーの場合も、CreateGeometryShader は失敗します。

使用例


ID3D11GeometryShader*       g_pGeometryShader11 = NULL;
ID3DBlob* pGeometryShaderBuffer = NULL;
ID3DBlob * errorbuffer = NULL;

D3DX11CompileFromFile( str, NULL, NULL, "GS", "gs_4_0", dwShaderFlags, 0, NULL,
                                         &pGeometryShaderBuffer, &errorbuffer, NULL );

pd3dDevice->CreateGeometryShader( pGeometryShaderBuffer->GetBufferPointer(),
               pGeometryShaderBuffer->GetBufferSize(), NULL, &g_pGeometryShader11 );
     
          
vtbl 14 HRESULT CreateGeometryShaderWithStreamOutput(void* pShaderBytecode, UINT_PTR BytecodeLength, D3D11_SO_DECLARATION_ENTRY* pSODeclaration, DWORD NumEntries, DWORD* pBufferStrides, DWORD NumStrides, DWORD RasterizedStream, ID3D11ClassLinkage* pClassLinkage, ID3D11GeometryShader** ppGeometryShader)

ストリーム出力バッファーに書き込めるジオメトリシェーダーを作成します。(ID3D11Device.CreateGeometryShaderWithStreamOutput)

pShaderBytecodevoid*in

標準のジオメトリシェーダーにストリーム出力を加えたもののコンパイル済みジオメトリシェーダーへのポインター。このポインターを取得する方法については、コンパイル済みシェーダーへのポインターの取得 を参照してください。

ジオメトリシェーダーを使用せずにストリーム出力を作成するには、直前のステージの出力シグネチャへのポインターを渡します。この出力シグネチャを取得するには、コンパイラー関数 D3DGetOutputSignatureBlob を呼び出します。直前のステージ(たとえば 頂点シェーダーステージドメインシェーダーステージ)のコンパイル済みシェーダーへのポインターを渡すこともできます。このコンパイル済みシェーダーがデータの出力シグネチャを提供します。

BytecodeLengthUINT_PTRinコンパイル済みジオメトリシェーダーのサイズ。
pSODeclarationD3D11_SO_DECLARATION_ENTRY*inoptionalD3D11_SO_DECLARATION_ENTRY 配列へのポインター。NumEntries > 0 の場合、NULL にはできません。
NumEntriesDWORDinストリーム出力宣言のエントリ数(0 から D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT の範囲)。
pBufferStridesDWORD*inoptionalバッファーストライドの配列。各ストライドは、そのバッファーの 1 要素のサイズです。
NumStridesDWORDinpBufferStrides 内のストライド(またはバッファー)の数(0 から D3D11_SO_BUFFER_SLOT_COUNT の範囲)。
RasterizedStreamDWORDinラスタライザーステージへ送るストリームのインデックス番号(0 から D3D11_SO_STREAM_COUNT - 1 の範囲)。 ラスタライズするストリームがない場合は D3D11_SO_NO_RASTERIZED_STREAM を設定します。
pClassLinkageID3D11ClassLinkage*inoptionalクラスリンケージインターフェイス(ID3D11ClassLinkage を参照)へのポインター。NULL を指定できます。
ppGeometryShaderID3D11GeometryShader**outoptional作成されたジオメトリシェーダーを表す ID3D11GeometryShader インターフェイスへのポインターのアドレス。 他のパラメーターを検証するには NULL を設定します。検証に合格すると、メソッドは S_OK ではなく S_FALSE を返します。

戻り値

型: HRESULT

このメソッドは、Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

CreateGeometryShaderWithStreamOutput の使用方法の詳細については、ストリーム出力を伴うジオメトリシェーダーオブジェクトの作成 を参照してください。

Windows 8 以降で利用できる Direct3D 11.1 ランタイムは、CreateGeometryShaderWithStreamOutput に次の新しい機能を提供します。

次のシェーダーモデル 5.0 命令は、Direct3D 11.0 ランタイムではピクセルシェーダーとコンピュートシェーダーでのみ使用できます。Direct3D 11.1 ランタイムでは、アンオーダードアクセスビュー(UAV)がすべてのシェーダーステージで利用できるため、これらの命令をすべてのシェーダーステージで使用できます。

したがって、次のシェーダーモデル 5.0 命令をジオメトリシェーダーで使用した場合でも、コンパイル済みのジオメトリシェーダーを pShaderBytecode に渡すことができます。つまり、CreateGeometryShaderWithStreamOutput の呼び出しは成功します。

すべてのシェーダーステージで UAV をサポートしないデバイス(すべてのシェーダーステージでの UAV サポートが実装されていない既存のドライバーを含む)において、次のいずれかの命令を使用するコンパイル済みシェーダーを pShaderBytecode に渡すと、CreateGeometryShaderWithStreamOutput は失敗します。また、ハードウェアがサポートする UAV スロットの範囲を超えて UAV スロットを使用しようとするシェーダーの場合も、CreateGeometryShaderWithStreamOutput は失敗します。

Windows Phone 8: この API はサポートされています。
vtbl 15 HRESULT CreatePixelShader(void* pShaderBytecode, UINT_PTR BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11PixelShader** ppPixelShader)

ピクセルシェーダーを作成します。(ID3D11Device.CreatePixelShader)

pShaderBytecodevoid*inコンパイル済みシェーダーへのポインター。
BytecodeLengthUINT_PTRinコンパイル済みピクセルシェーダーのサイズ。
pClassLinkageID3D11ClassLinkage*inoptionalクラスリンケージインターフェイス(ID3D11ClassLinkage を参照)へのポインター。NULL を指定できます。
ppPixelShaderID3D11PixelShader**outoptionalID3D11PixelShader インターフェイスへのポインターのアドレス。NULL の場合、他のすべてのパラメーターが検証され、すべてのパラメーターが検証に合格すると、この API は S_OK ではなく S_FALSE を返します。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

ピクセルシェーダーを作成した後、ID3D11DeviceContext::PSSetShader を使用してデバイスに設定できます。

vtbl 16 HRESULT CreateHullShader(void* pShaderBytecode, UINT_PTR BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11HullShader** ppHullShader)

ハルシェーダーを作成します。

pShaderBytecodevoid*inコンパイル済みシェーダーへのポインター。
BytecodeLengthUINT_PTRinコンパイル済みシェーダーのサイズ。
pClassLinkageID3D11ClassLinkage*inoptionalクラスリンケージインターフェイス(ID3D11ClassLinkage を参照)へのポインター。NULL を指定できます。
ppHullShaderID3D11HullShader**outoptionalID3D11HullShader インターフェイスへのポインターのアドレス。

戻り値

型: HRESULT

このメソッドは、Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

Windows 8 以降で利用できる Direct3D 11.1 ランタイムは、CreateHullShader に次の新しい機能を提供します。

次のシェーダーモデル 5.0 命令は、Direct3D 11.0 ランタイムではピクセルシェーダーとコンピュートシェーダーでのみ使用できます。Direct3D 11.1 ランタイムでは、アンオーダードアクセスビュー(UAV)がすべてのシェーダーステージで利用できるため、これらの命令をすべてのシェーダーステージで使用できます。

したがって、次のシェーダーモデル 5.0 命令をハルシェーダーで使用した場合でも、コンパイル済みのハルシェーダーを pShaderBytecode に渡すことができます。つまり、CreateHullShader の呼び出しは成功します。

すべてのシェーダーステージで UAV をサポートしないデバイス(すべてのシェーダーステージでの UAV サポートが実装されていない既存のドライバーを含む)において、次のいずれかの命令を使用するコンパイル済みシェーダーを pShaderBytecode に渡すと、CreateHullShader は失敗します。また、ハードウェアがサポートする UAV スロットの範囲を超えて UAV スロットを使用しようとするシェーダーの場合も、CreateHullShader は失敗します。

vtbl 17 HRESULT CreateDomainShader(void* pShaderBytecode, UINT_PTR BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11DomainShader** ppDomainShader)

ドメインシェーダーを作成します。

pShaderBytecodevoid*inコンパイル済みシェーダーへのポインター。
BytecodeLengthUINT_PTRinコンパイル済みシェーダーのサイズ。
pClassLinkageID3D11ClassLinkage*inoptionalクラスリンケージインターフェイス(ID3D11ClassLinkage を参照)へのポインター。NULL を指定できます。
ppDomainShaderID3D11DomainShader**outoptionalID3D11DomainShader インターフェイスへのポインターのアドレス。NULL の場合、他のすべてのパラメーターが検証され、すべてのパラメーターが検証に合格すると、この API は S_OK ではなく S_FALSE を返します。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

Windows 8 以降で利用できる Direct3D 11.1 ランタイムは、CreateDomainShader に次の新しい機能を提供します。

次のシェーダーモデル 5.0 命令は、Direct3D 11.0 ランタイムではピクセルシェーダーとコンピュートシェーダーでのみ使用できます。Direct3D 11.1 ランタイムでは、アンオーダードアクセスビュー(UAV)がすべてのシェーダーステージで利用できるため、これらの命令をすべてのシェーダーステージで使用できます。

したがって、次のシェーダーモデル 5.0 命令をドメインシェーダーで使用した場合でも、コンパイル済みのドメインシェーダーを pShaderBytecode に渡すことができます。つまり、CreateDomainShader の呼び出しは成功します。

すべてのシェーダーステージで UAV をサポートしないデバイス(すべてのシェーダーステージでの UAV サポートが実装されていない既存のドライバーを含む)において、次のいずれかの命令を使用するコンパイル済みシェーダーを pShaderBytecode に渡すと、CreateDomainShader は失敗します。また、ハードウェアがサポートする UAV スロットの範囲を超えて UAV スロットを使用しようとするシェーダーの場合も、CreateDomainShader は失敗します。

vtbl 18 HRESULT CreateComputeShader(void* pShaderBytecode, UINT_PTR BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11ComputeShader** ppComputeShader)

コンピュートシェーダーを作成します。

pShaderBytecodevoid*inコンパイル済みシェーダーへのポインター。
BytecodeLengthUINT_PTRinpShaderBytecode のコンパイル済みシェーダーのサイズ。
pClassLinkageID3D11ClassLinkage*inoptionalクラスリンケージインターフェイスを表す ID3D11ClassLinkage へのポインター。NULL を指定できます。
ppComputeShaderID3D11ComputeShader**outoptionalID3D11ComputeShader インターフェイスへのポインターのアドレス。NULL の場合、 他のすべてのパラメーターが検証されます。検証に合格すると、CreateComputeShader は S_OK ではなく S_FALSE を返します。

戻り値

型: HRESULT

コンピュートシェーダーを作成するためのメモリが不足している場合、このメソッドは E_OUTOFMEMORY を返します。 その他の戻り値については Direct3D 11 の戻り値 を参照してください。

解説(Remarks)

例については、コンピュートシェーダーの作成方法 および HDRToneMappingCS11 サンプル を参照してください。

vtbl 19 HRESULT CreateClassLinkage(ID3D11ClassLinkage** ppLinkage)

動的シェーダーリンケージを有効にするためのクラスリンケージライブラリを作成します。

ppLinkageID3D11ClassLinkage**outクラスリンケージインターフェイスへのポインター(ID3D11ClassLinkage を参照)へのポインター。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

ppLinkage に返される ID3D11ClassLinkage インターフェイスは、ID3D11Device::CreatePixelShader などの ID3D11Device のシェーダー作成メソッドにパラメーターとして渡すことで、シェーダーに関連付けられます。

CreateClassLinkage の使用


ID3D11ClassLinkage * g_pPSClassLinkage = NULL;            
pd3dDevice->CreateClassLinkage( &g_pPSClassLinkage ); 
          
vtbl 20 HRESULT CreateBlendState(D3D11_BLEND_DESC* pBlendStateDesc, ID3D11BlendState** ppBlendState)

出力マージャーステージのブレンドステートをカプセル化するブレンドステートオブジェクトを作成します。(ID3D11Device.CreateBlendState)

pBlendStateDescD3D11_BLEND_DESC*inブレンドステートの記述(D3D11_BLEND_DESC を参照)へのポインター。
ppBlendStateID3D11BlendState**outoptional作成されたブレンドステートオブジェクト(ID3D11BlendState を参照)へのポインターのアドレス。

戻り値

型: HRESULT

ブレンドステートオブジェクトを作成するためのメモリが不足している場合、このメソッドは E_OUTOFMEMORY を返します。 その他の戻り値については Direct3D 11 の戻り値 を参照してください。

解説(Remarks)

アプリケーションは最大 4096 個の一意なブレンドステートオブジェクトを作成できます。オブジェクトが作成されるたびに、ランタイムは同じステートを持つ既存のオブジェクトがないかを確認します。 そのようなオブジェクトが既に存在する場合、ランタイムは重複したオブジェクトを作成せず、既存のインスタンスへのポインターを返します。

Windows Phone 8: この API はサポートされています。

vtbl 21 HRESULT CreateDepthStencilState(D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc, ID3D11DepthStencilState** ppDepthStencilState)

出力マージャーステージの深度ステンシルテスト情報をカプセル化する深度ステンシルステートオブジェクトを作成します。(ID3D11Device.CreateDepthStencilState)

pDepthStencilDescD3D11_DEPTH_STENCIL_DESC*in深度ステンシルステートの記述(D3D11_DEPTH_STENCIL_DESC を参照)へのポインター。
ppDepthStencilStateID3D11DepthStencilState**outoptional作成された深度ステンシルステートオブジェクト(ID3D11DepthStencilState を参照)へのポインターのアドレス。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

1 つのデバイスでは、同時に 4096 個の一意な深度ステンシルステートオブジェクトを作成できます。

アプリケーションが既存のインターフェイスと同じステートを持つ深度ステンシルステートインターフェイスを作成しようとした場合、同一のインターフェイスが返され、一意な深度ステンシルステートオブジェクトの総数は変わりません。

vtbl 22 HRESULT CreateRasterizerState(D3D11_RASTERIZER_DESC* pRasterizerDesc, ID3D11RasterizerState** ppRasterizerState)

ラスタライザーステージの動作を指定するラスタライザーステートオブジェクトを作成します。(ID3D11Device.CreateRasterizerState)

pRasterizerDescD3D11_RASTERIZER_DESC*inラスタライザーステートの記述(D3D11_RASTERIZER_DESC を参照)へのポインター。
ppRasterizerStateID3D11RasterizerState**outoptional作成されたラスタライザーステートオブジェクト(ID3D11RasterizerState を参照)へのポインターのアドレス。

戻り値

型: HRESULT

コンピュートシェーダーを作成するためのメモリが不足している場合、このメソッドは E_OUTOFMEMORY を返します。その他の戻り値については Direct3D 11 の戻り値 を参照してください。

解説(Remarks)

1 つのデバイスでは、同時に 4096 個の一意なラスタライザーステートオブジェクトを作成できます。

アプリケーションが既存のインターフェイスと同じステートを持つラスタライザーステートインターフェイスを作成しようとした場合、同一のインターフェイスが返され、一意なラスタライザーステートオブジェクトの総数は変わりません。

vtbl 23 HRESULT CreateSamplerState(D3D11_SAMPLER_DESC* pSamplerDesc, ID3D11SamplerState** ppSamplerState)

テクスチャのサンプリング情報をカプセル化するサンプラーステートオブジェクトを作成します。(ID3D11Device.CreateSamplerState)

pSamplerDescD3D11_SAMPLER_DESC*inサンプラーステートの記述(D3D11_SAMPLER_DESC を参照)へのポインター。
ppSamplerStateID3D11SamplerState**outoptional作成されたサンプラーステートオブジェクト(ID3D11SamplerState を参照)へのポインターのアドレス。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

1 つのデバイスでは、同時に 4096 個の一意なサンプラーステートオブジェクトを作成できます。

アプリケーションが既存のインターフェイスと同じステートを持つサンプラーステートインターフェイスを作成しようとした場合、同一のインターフェイスが返され、一意なサンプラーステートオブジェクトの総数は変わりません。

vtbl 24 HRESULT CreateQuery(D3D11_QUERY_DESC* pQueryDesc, ID3D11Query** ppQuery)

このインターフェイスは、GPU から情報を照会するためのメソッドをカプセル化します。(ID3D11Device.CreateQuery)

pQueryDescD3D11_QUERY_DESC*inクエリの記述(D3D11_QUERY_DESC を参照)へのポインター。
ppQueryID3D11Query**outoptional作成されたクエリオブジェクト(ID3D11Query を参照)へのポインターのアドレス。

戻り値

型: HRESULT

クエリオブジェクトを作成するためのメモリが不足している場合、このメソッドは E_OUTOFMEMORY を返します。 その他の戻り値については Direct3D 11 の戻り値 を参照してください。

vtbl 25 HRESULT CreatePredicate(D3D11_QUERY_DESC* pPredicateDesc, ID3D11Predicate** ppPredicate)

プレディケートを作成します。(ID3D11Device.CreatePredicate)

pPredicateDescD3D11_QUERY_DESC*inクエリの記述へのポインター。クエリの種類は D3D11_QUERY_SO_OVERFLOW_PREDICATE または D3D11_QUERY_OCCLUSION_PREDICATE でなければなりません(D3D11_QUERY_DESC を参照)。
ppPredicateID3D11Predicate**outoptionalプレディケート(ID3D11Predicate を参照)へのポインターのアドレス。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

vtbl 26 HRESULT CreateCounter(D3D11_COUNTER_DESC* pCounterDesc, ID3D11Counter** ppCounter)

GPU のパフォーマンスを測定するためのカウンターオブジェクトを作成します。(ID3D11Device.CreateCounter)

pCounterDescD3D11_COUNTER_DESC*inカウンターの記述(D3D11_COUNTER_DESC を参照)へのポインター。
ppCounterID3D11Counter**outoptionalカウンター(ID3D11Counter を参照)へのポインターのアドレス。

戻り値

型: HRESULT

この関数が成功した場合は S_OK を返します。失敗した場合の戻り値は次のいずれかです: S_FALSEE_OUTOFMEMORYDXGI_ERROR_UNSUPPORTEDDXGI_ERROR_NONEXCLUSIVEE_INVALIDARG

DXGI_ERROR_UNSUPPORTED は、アプリケーションが well-known カウンターの作成を要求したものの、現在のデバイスがそれをサポートしていない場合に返されます。

DXGI_ERROR_NONEXCLUSIVE は、別のデバイスオブジェクトが現在カウンターを使用しているため、このデバイスでは現時点でカウンターを使用できないことを示します。

E_INVALIDARG は、範囲外の well-known カウンターまたはデバイス依存カウンターが要求された場合、あるいは同時にアクティブにできるカウンターを使い切った場合に返されます。

vtbl 27 HRESULT CreateDeferredContext(DWORD ContextFlags, ID3D11DeviceContext** ppDeferredContext)

コマンドリストを記録できる遅延コンテキストを作成します。(ID3D11Device.CreateDeferredContext)

ContextFlagsDWORDin将来の使用のために予約されています。 0 を渡してください。
ppDeferredContextID3D11DeviceContext**outoptionalメソッドの完了時に、渡された ID3D11DeviceContext インターフェイスポインターへのポインターが初期化されます。

戻り値

型: HRESULT

成功した場合は S_OK を返します。それ以外の場合は次のいずれかを返します。

解説(Remarks)

遅延コンテキストはスレッドセーフなコンテキストで、メインのレンダリングスレッド以外のスレッドでグラフィックスコマンドを記録するために使用できます。 遅延コンテキストを使用すると、ID3D11CommandList インターフェイスにカプセル化されたコマンドリストにグラフィックスコマンドを記録できます。 シーンのすべての項目を記録した後、最終的なレンダリングのためにそれらをメインのレンダースレッドに送信できます。 この方法により、複数のスレッドで並行してレンダリング処理を実行でき、マルチコア CPU 環境でパフォーマンスが向上する可能性があります。

遅延コンテキストは複数作成できます。

メモ ID3D11Device が表すデバイスを D3D11_CREATE_DEVICE_SINGLETHREADED の値を使用して作成した場合、CreateDeferredContext メソッドは失敗し、遅延コンテキストを作成できません。
遅延コンテキストの詳細については、即時レンダリングと遅延レンダリング を参照してください。

Windows Phone 8: この API はサポートされています。

vtbl 28 HRESULT OpenSharedResource(HANDLE hResource, GUID* ReturnedInterface, void** ppResource)

別のデバイスで作成された共有リソースへのアクセス権をデバイスに与えます。

hResourceHANDLEinリソースハンドル。「解説」を参照してください。
ReturnedInterfaceGUID*inリソースインターフェイスのグローバル一意識別子(GUID)。「解説」を参照してください。
ppResourcevoid**outoptionalアクセスを取得するリソースへのポインターのアドレス。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

リソースのインターフェイスの REFIID(GUID)は、__uuidof() マクロを使用して取得できます。たとえば、__uuidof(ID3D11Buffer) はバッファーリソースのインターフェイスの GUID を取得します。

リソースの一意なハンドルの取得方法は、そのリソースを最初に作成したデバイスの種類によって異なります。

2 つの Direct3D 11 デバイス間でリソースを共有するには、ID3D11Device インターフェイスを使用して作成した場合、そのリソースは D3D11_RESOURCE_MISC_SHARED フラグを指定して作成されている必要があります。 DXGI デバイスインターフェイスを使用して作成した場合、そのリソースは常に共有されます。

リソースのインターフェイスの REFIID(GUID)は、__uuidof() マクロを使用して取得できます。 たとえば、__uuidof(ID3D11Buffer) はバッファーリソースのインターフェイスの GUID を取得します。

2 つの Direct3D 10/11 デバイス間でリソースを共有する場合、リソースの一意なハンドルは、リソースに対して IDXGIResource インターフェイスをクエリし、GetSharedHandle を呼び出すことで取得できます。


IDXGIResource* pOtherResource(NULL);
hr = pOtherDeviceResource->QueryInterface( __uuidof(IDXGIResource), (void**)&pOtherResource );
HANDLE sharedHandle;
pOtherResource->GetSharedHandle(&sharedHandle);
      

共有できるリソースは、ミップマップを持たない 2D テクスチャのみです。

Direct3D 9 デバイスと Direct3D 11 デバイス間でリソースを共有するには、そのテクスチャが CreateTexturepSharedHandle 引数を使用して作成されている必要があります。 その後、共有された Direct3D 9 のハンドルを OpenSharedResource の hResource 引数に渡します。

次のコードは、関連するメソッド呼び出しを示しています。


sharedHandle = NULL; // must be set to NULL to create, can use a valid handle here to open in D3D9 
pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle); 
... 
pDevice11->OpenSharedResource(sharedHandle, __uuidof(ID3D11Resource), (void**)(&tempResource11)); 
tempResource11->QueryInterface(__uuidof(ID3D11Texture2D), (void**)(&pTex2D_11)); 
tempResource11->Release(); 
// now use pTex2D_11 with pDevice11   
      

D3D9 から D3D11 へ共有するテクスチャには、次の制限があります。

共有テクスチャがいずれかのデバイスで更新された場合、そのデバイスで ID3D11DeviceContext::Flush を呼び出す必要があります。
vtbl 29 HRESULT CheckFormatSupport(DXGI_FORMAT Format, DWORD* pFormatSupport)

インストールされているビデオデバイスにおける、指定したフォーマットのサポート状況を取得します。(ID3D11Device.CheckFormatSupport)

FormatDXGI_FORMATinサポート状況を確認するフォーマットを表す DXGI_FORMAT 列挙値。
pFormatSupportDWORD*out指定したフォーマットがインストールされているデバイスでどのようにサポートされているかを示す D3D11_FORMAT_SUPPORT 列挙値のビットフィールド。 値は OR で結合されています。

戻り値

型: HRESULT

成功した場合は S_OK を返します。Format パラメーターが NULL の場合は E_INVALIDARG を返し、 指定したフォーマットが存在しない場合は E_FAIL を返します。

vtbl 30 HRESULT CheckMultisampleQualityLevels(DXGI_FORMAT Format, DWORD SampleCount, DWORD* pNumQualityLevels)

マルチサンプリング時に利用できる品質レベルの数を取得します。(ID3D11Device.CheckMultisampleQualityLevels)

FormatDXGI_FORMATinテクスチャのフォーマット。DXGI_FORMAT を参照してください。
SampleCountDWORDinマルチサンプリング時のサンプル数。
pNumQualityLevelsDWORD*outアダプターがサポートする品質レベルの数。解説 を参照してください。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

テクスチャをマルチサンプリングする場合、アダプターで利用できる品質レベルの数は、使用するテクスチャフォーマットと要求するサンプル数によって異なります。品質レベルの最大数は D3D11.h 内の D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT で定義されています。このメソッドが 0(S_OK)を返し、出力パラメーター pNumQualityLevels が正の値を受け取った場合、そのフォーマットとサンプル数の組み合わせはそのデバイスでサポートされています。組み合わせがサポートされていない場合、このメソッドは失敗を示す HRESULT コード(すなわち負の整数)を返すか、出力パラメーター pNumQualityLevels を 0 に設定するか、あるいはその両方を行います。

さらに、品質レベルの定義は各ハードウェアベンダーに委ねられていますが、この情報を知るための手段は Direct3D では提供されていません。

なお、FEATURE_LEVEL_10_1 のデバイスは、R32G32B32A32 および R32G32B32 を除くすべてのレンダーターゲットで 4x MSAA をサポートすることが必須です。FEATURE_LEVEL_11_0 のデバイスは、すべてのレンダーターゲットフォーマットで 4x MSAA を、R32G32B32A32 系のフォーマットを除くすべてのレンダーターゲットフォーマットで 8x MSAA をサポートすることが必須です。

vtbl 31 void CheckCounterInfo(D3D11_COUNTER_INFO* pCounterInfo)

カウンターの情報を取得します。(ID3D11Device.CheckCounterInfo)

pCounterInfoD3D11_COUNTER_INFO*outカウンター情報(D3D11_COUNTER_INFO を参照)へのポインター。
vtbl 32 HRESULT CheckCounter(D3D11_COUNTER_DESC* pDesc, D3D11_COUNTER_TYPE* pType, DWORD* pActiveCounters, LPSTR szName, DWORD* pNameLength, LPSTR szUnits, DWORD* pUnitsLength, LPSTR szDescription, DWORD* pDescriptionLength)

既存のカウンターの種類、名前、測定単位、説明を取得します。(ID3D11Device.CheckCounter)

pDescD3D11_COUNTER_DESC*inカウンターの記述(D3D11_COUNTER_DESC を参照)へのポインター。どのカウンターの情報を取得するかを指定します。
pTypeD3D11_COUNTER_TYPE*outカウンターのデータ型(D3D11_COUNTER_TYPE を参照)へのポインター。取得するカウンターのデータ型を指定します。
pActiveCountersDWORD*outこの種類のカウンターを作成するために必要なハードウェアカウンターの数へのポインター。同じ種類のカウンターのすべてのインスタンスは、同じハードウェアカウンターを使用します。
szNameLPSTRoutoptionalカウンターの簡潔な名前が格納される文字列。アプリケーションがカウンターの名前を必要としない場合は NULL を指定できます。
pNameLengthDWORD*inoutoptionalszName に返される文字列の長さ。NULL を指定できます。
szUnitsLPSTRoutoptionalカウンターが測定する単位の名前(ポインターが指すメモリに文字列を格納できる十分な領域がある場合)。NULL を指定できます。返される文字列は常に英語です。
pUnitsLengthDWORD*inoutoptionalszUnits に返される文字列の長さ。NULL を指定できます。
szDescriptionLPSTRoutoptionalカウンターの説明(ポインターが指すメモリに文字列を格納できる十分な領域がある場合)。NULL を指定できます。返される文字列は常に英語です。
pDescriptionLengthDWORD*inoutoptionalszDescription に返される文字列の長さ。NULL を指定できます。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

長さのパラメーターは NULL にできます。これは、アプリケーションがその長さも対応する文字列の値も必要としないことを示します。長さのパラメーターが NULL でなく、対応する文字列が NULL の場合、長さのパラメーターの入力値は無視され、対応する文字列の長さ(終端の NULL を含む)が長さのパラメーターを通じて返されます。長さと対応するパラメーターの両方が NULL でない場合、長さの入力値が十分な領域があるかどうか確認され、その後、文字列の長さ(終端の NULL 文字を含む)が長さのパラメーターを通じて返されます。

Windows Phone 8: この API はサポートされています。

vtbl 33 HRESULT CheckFeatureSupport(D3D11_FEATURE Feature, void* pFeatureSupportData, DWORD FeatureSupportDataSize)

現在のグラフィックスドライバーがサポートする機能に関する情報を取得します。(ID3D11Device.CheckFeatureSupport)

FeatureD3D11_FEATUREinサポート状況を照会する機能を示す D3D11_FEATURE 列挙型のメンバー。
pFeatureSupportDatavoid*outメソッドの完了時に、渡された構造体に機能のサポート状況を示すデータが格納されます。
FeatureSupportDataSizeDWORDinpFeatureSupportData パラメーターに渡す構造体のサイズ。

戻り値

型: HRESULT

成功した場合は S_OK を返します。それ以外の場合、pFeatureSupportData パラメーターにサポートされていないデータ型が渡されたとき、 または FeatureSupportDataSize パラメーターのサイズの不一致が検出されたときは E_INVALIDARG を返します。

解説(Remarks)

マルチスレッドのサポート状況を照会するには、Feature パラメーターに D3D11_FEATURE_THREADING を渡し、 pFeatureSupportData パラメーターに D3D11_FEATURE_DATA_THREADING 構造体を渡し、FeatureSupportDataSize パラメーターに D3D11_FEATURE_DATA_THREADING 構造体のサイズを渡します。

FeatureD3D11_FEATURE_FORMAT_SUPPORT を設定して CheckFeatureSupport を呼び出すと、このメソッドは ID3D11Device::CheckFormatSupport が返すものと同じ情報を返します。

vtbl 34 HRESULT GetPrivateData(GUID* guid, DWORD* pDataSize, void* pData)

デバイスからアプリケーション定義のデータを取得します。

guidGUID*inデータに関連付けられた GUID。
pDataSizeDWORD*inout入力時には pData が指すバッファーのサイズ(バイト単位)を保持し、出力時には GetPrivateData が取得したデータのサイズ(バイト単位)を受け取る変数へのポインター。
pDatavoid*outoptionalpDataSize がデータを保持するのに十分な大きさのバッファーを示す値を指している場合に、GetPrivateData がデバイスからのデータを格納するバッファーへのポインター。

戻り値

型: HRESULT

このメソッドは、Direct3D 11 の戻り値 のトピックで説明されているコードのいずれかを返します。

解説(Remarks)

返されるデータが、以前に SetPrivateDataInterface で設定された IUnknown(またはその派生クラス)へのポインターである場合、プライベートデータが返される前にそのインターフェイスの参照カウントがインクリメントされます。

vtbl 35 HRESULT SetPrivateData(GUID* guid, DWORD DataSize, void* pData)

デバイスにデータを設定し、そのデータを GUID に関連付けます。(ID3D11Device.SetPrivateData)

guidGUID*inデータに関連付ける GUID。
DataSizeDWORDinデータのサイズ。
pDatavoid*inoptionalこのデバイスとともに格納するデータへのポインター。pData が NULL の場合、DataSize も 0 でなければならず、その GUID に以前関連付けられていたデータはすべて破棄されます。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

このメソッドでデバイスに格納したデータは、ID3D11Device::GetPrivateData で取得できます。

このメソッドで設定するデータと GUID は、通常はアプリケーション定義のものです。

デバッグレイヤー は、オブジェクトのインターフェイスポインターとそのフレンドリ名の一覧を出力することでメモリリークを報告します。既定のフレンドリ名は "<unnamed>" です。フレンドリ名を設定しておくと、どのオブジェクトインターフェイスポインターがリークの原因となったかを判別できます。フレンドリ名を設定するには、SetPrivateData メソッドと、D3Dcommon.h にある WKPDID_D3DDebugObjectName GUID を使用します。たとえば、pContext に My name というフレンドリ名を付けるには、次のコードを使用します。


static const char c_szName[] = "My name";
hr = pContext->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
vtbl 36 HRESULT SetPrivateDataInterface(GUID* guid, IUnknown* pData)

IUnknown 派生インターフェイスをこのデバイスチャイルドに関連付け、そのインターフェイスをアプリケーション定義の GUID に関連付けます。(ID3D11Device.SetPrivateDataInterface)

guidGUID*inインターフェイスに関連付ける GUID。
pDataIUnknown*inoptionalデバイスオブジェクトに関連付ける IUnknown 派生インターフェイスへのポインター。設定時に参照カウントがインクリメントされ、ID3D11Device が破棄されたとき、または同じ GUIDSetPrivateDataSetPrivateDataInterface を呼び出してデータが上書きされたときにデクリメントされます。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

vtbl 37 D3D_FEATURE_LEVEL GetFeatureLevel()

ハードウェアデバイスの機能レベルを取得します。(ID3D11Device.GetFeatureLevel)

戻り値

型: D3D_FEATURE_LEVEL

ハードウェアデバイスの機能レベルを示す D3D_FEATURE_LEVEL 列挙型のメンバー。

解説(Remarks)

機能レベル はデバイスの能力を決定します。

vtbl 38 DWORD GetCreationFlags()

D3D11CreateDevice でデバイスを作成した呼び出しで使用されたフラグを取得します。

戻り値

型: UINT

デバイスの作成に使用されたフラグを含むビットフィールド。D3D11_CREATE_DEVICE_FLAG を参照してください。

vtbl 39 HRESULT GetDeviceRemovedReason()

デバイスが取り外された理由を取得します。(ID3D11Device.GetDeviceRemovedReason)

戻り値

型: HRESULT

返される可能性のある値は次のとおりです。

これらの戻り値の詳細については、DXGI_ERROR を参照してください。
vtbl 40 void GetImmediateContext(ID3D11DeviceContext** ppImmediateContext)

コマンドリストを再生できる即時コンテキストを取得します。(ID3D11Device.GetImmediateContext)

ppImmediateContextID3D11DeviceContext**outメソッドの完了時に、渡された ID3D11DeviceContext インターフェイスポインターへのポインターが初期化されます。

解説(Remarks)

GetImmediateContext メソッドは、デバイスに即座に送信したいレンダリングを実行するために使用する即時コンテキストを表す ID3D11DeviceContext オブジェクトを返します。ほとんどのアプリケーションにおいて、即時コンテキストはシーンを描画するために使用する主要なオブジェクトです。

GetImmediateContext メソッドは、即時コンテキストの参照カウントを 1 つインクリメントします。そのため、メモリリークを避けるには、使い終わったときに返されたインターフェイスポインターに対して Release を呼び出す必要があります。

vtbl 41 HRESULT SetExceptionMode(DWORD RaiseFlags)

例外モードフラグを取得します。(ID3D11Device.SetExceptionMode)

RaiseFlagsDWORDin1 つ以上の例外フラグを含む値。各フラグは、例外を発生させる条件を指定します。フラグは D3D11_RAISE_FLAG に列挙されています。既定値の 0 は、フラグがないことを意味します。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 の戻り値 のいずれかを返します。

解説(Remarks)

例外モードフラグを設定すると、エラー条件を継続不能な例外に昇格させることができます。

エラーが発生すると、Direct3D デバイスは DEVICEREMOVED 状態になり、該当する例外フラグが設定されていれば例外が発生します。発生した例外はアプリケーションを終了させるように設計されています。終了前にアプリケーションがデータを永続化できる最後の機会は、UnhandledExceptionFilter を使用することです(構造化例外処理 を参照)。一般に、UnhandledExceptionFilter は、アプリケーションがクラッシュしているときにデータを(たとえばディスクへ)永続化しようとするために利用されます。UnhandledExceptionFilter 中に実行されるコードは、(プロセスが破損している可能性があるため)確実に実行される保証はありません。UnhandledExceptionFilter が再びクラッシュする前に永続化できたデータは、疑わしいものとして扱い、破損していない新しいプロセスで使用可能かどうかを検査する必要があります。

vtbl 42 DWORD GetExceptionMode()

例外モードフラグを取得します。(ID3D11Device.GetExceptionMode)

戻り値

型: UINT

1 つ以上の例外フラグを含む値。各フラグは、例外を発生させる条件を指定します。フラグは D3D11_RAISE_FLAG に列挙されています。既定値の 0 は、フラグがないことを意味します。

解説(Remarks)

例外モードフラグは、エラー条件を継続不能な例外に昇格させるために使用します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ID3D11Device "{DB6F6DDB-AC77-4E88-8253-819DF9BBF140}"
#usecom global ID3D11Device IID_ID3D11Device "{}"
#comfunc global ID3D11Device_CreateBuffer                          3 var,var,sptr
#comfunc global ID3D11Device_CreateTexture1D                       4 var,var,sptr
#comfunc global ID3D11Device_CreateTexture2D                       5 var,var,sptr
#comfunc global ID3D11Device_CreateTexture3D                       6 var,var,sptr
#comfunc global ID3D11Device_CreateShaderResourceView              7 sptr,var,sptr
#comfunc global ID3D11Device_CreateUnorderedAccessView             8 sptr,var,sptr
#comfunc global ID3D11Device_CreateRenderTargetView                9 sptr,var,sptr
#comfunc global ID3D11Device_CreateDepthStencilView                10 sptr,var,sptr
#comfunc global ID3D11Device_CreateInputLayout                     11 var,int,sptr,sptr,sptr
#comfunc global ID3D11Device_CreateVertexShader                    12 sptr,sptr,sptr,sptr
#comfunc global ID3D11Device_CreateGeometryShader                  13 sptr,sptr,sptr,sptr
#comfunc global ID3D11Device_CreateGeometryShaderWithStreamOutput  14 sptr,sptr,var,int,var,int,int,sptr,sptr
#comfunc global ID3D11Device_CreatePixelShader                     15 sptr,sptr,sptr,sptr
#comfunc global ID3D11Device_CreateHullShader                      16 sptr,sptr,sptr,sptr
#comfunc global ID3D11Device_CreateDomainShader                    17 sptr,sptr,sptr,sptr
#comfunc global ID3D11Device_CreateComputeShader                   18 sptr,sptr,sptr,sptr
#comfunc global ID3D11Device_CreateClassLinkage                    19 sptr
#comfunc global ID3D11Device_CreateBlendState                      20 var,sptr
#comfunc global ID3D11Device_CreateDepthStencilState               21 var,sptr
#comfunc global ID3D11Device_CreateRasterizerState                 22 var,sptr
#comfunc global ID3D11Device_CreateSamplerState                    23 var,sptr
#comfunc global ID3D11Device_CreateQuery                           24 var,sptr
#comfunc global ID3D11Device_CreatePredicate                       25 var,sptr
#comfunc global ID3D11Device_CreateCounter                         26 var,sptr
#comfunc global ID3D11Device_CreateDeferredContext                 27 int,sptr
#comfunc global ID3D11Device_OpenSharedResource                    28 sptr,var,sptr
#comfunc global ID3D11Device_CheckFormatSupport                    29 int,var
#comfunc global ID3D11Device_CheckMultisampleQualityLevels         30 int,int,var
#comfunc global ID3D11Device_CheckCounterInfo                      31 var
#comfunc global ID3D11Device_CheckCounter                          32 var,var,var,var,var,var,var,var,var
#comfunc global ID3D11Device_CheckFeatureSupport                   33 int,sptr,int
#comfunc global ID3D11Device_GetPrivateData                        34 var,var,sptr
#comfunc global ID3D11Device_SetPrivateData                        35 var,int,sptr
#comfunc global ID3D11Device_SetPrivateDataInterface               36 var,sptr
#comfunc global ID3D11Device_GetFeatureLevel                       37
#comfunc global ID3D11Device_GetCreationFlags                      38
#comfunc global ID3D11Device_GetDeviceRemovedReason                39
#comfunc global ID3D11Device_GetImmediateContext                   40 sptr
#comfunc global ID3D11Device_SetExceptionMode                      41 int
#comfunc global ID3D11Device_GetExceptionMode                      42
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。