PFND3D10DDI_RESOURCECOPYREGION コールバック関数 (d3d10umddi.h)
ResourceCopyRegion 関数は、ソース サブリソース領域をコピー先サブリソース上の場所にコピーします。
構文
PFND3D10DDI_RESOURCECOPYREGION Pfnd3d10ddiResourcecopyregion;
void Pfnd3d10ddiResourcecopyregion(
D3D10DDI_HDEVICE unnamedParam1,
D3D10DDI_HRESOURCE unnamedParam2,
UINT unnamedParam3,
UINT unnamedParam4,
UINT unnamedParam5,
UINT unnamedParam6,
D3D10DDI_HRESOURCE unnamedParam7,
UINT unnamedParam8,
const D3D10_DDI_BOX *unnamedParam9
)
{...}
パラメーター
unnamedParam1
hDevice [in]
ディスプレイ デバイス (グラフィックス コンテキスト) へのハンドル。
unnamedParam2
hDstResource [in]
コピー先のリソースへのハンドル。
unnamedParam3
DstSubresource [in]
コピー先のサブリソースを示すインデックス。
unnamedParam4
DstX [in]
変換先サブリソースの x 座標。
unnamedParam5
DstY [in]
変換先サブリソースの y 座標。 1 次元 (1-D) サブリソースの場合、 DstY は 0 に設定されます。
unnamedParam6
DstZ [in]
変換先サブリソースの z 座標。 1 次元 (1-D) および 2 次元 (2-D) サブリソースの場合、 DstZ は 0 に設定されます。
unnamedParam7
hSrcResource [in]
コピー元のソース リソースへのハンドル。
unnamedParam8
SrcSubresource [in]
コピー元のサブリソースを示すインデックス。
unnamedParam9
pSrcBox [in, optional]
ソースまたはコピー先のサブリソースのいずれかに適合するボックスを指定する D3D10_DDI_BOX構造体への ポインター。 pSrcBox が NULL の場合、ドライバーはソース サブリソース全体をコピー先にコピーする必要があります。
D3D10_DDI_BOX構造体のメンバーが left>=right、top>=bottom、front>=back などの場合、pSrcBox は空と見なされ、ResourceCopyRegion はコピー操作を実行できません。
戻り値
なし
解説
ドライバーは 、pfnSetErrorCb コールバック関数を使用してエラー コードを設定できます。
Microsoft Direct3D ランタイムは、ユーザー モードディスプレイ ドライバーの ResourceCopyRegion 関数を呼び出して、指定したソース サブリソース リージョンから指定したターゲット サブリソース上の場所にコピーするようにドライバーに通知します。 ソースと宛先のサブリソースを、同じリソースの同じサブリソースにすることはできません。 ソース リソースと変換先リソースの両方が同じ種類のリソースであり、互いに変換可能な形式の種類 (DXGI_FORMAT型指定の値) を持っている必要があります。
バッファーの場合、すべての座標はバイト単位である必要があります。テクスチャの場合、すべての座標はピクセル単位である必要があります。 pSrcBox パラメーターが指すボックスは、ソース サブリソース領域またはコピー先サブリソースの端を越えて拡張することはできません。 ソースリソースと移行先リソースを現在マップすることはできません。 さらに、リソース作成フラグは、リソースがコピー操作に参加できるかどうかを制限します。
D3DDDIERR_DEVICEREMOVEDを除き、ドライバーでエラーが発生しないようにする必要があります。 したがって、 ドライバーが pfnSetErrorCb 関数の呼び出しで、D3DDDIERR_DEVICEREMOVEDを除くエラーを渡した場合、Direct3D ランタイムはエラーが重要であると判断します。 デバイスが削除された場合でも、ドライバーはD3DDDIERR_DEVICEREMOVEDを返す必要はありません。ただし、デバイスの削除が ResourceCopyRegion の操作に干渉した場合 (通常は実行しないでください)、ドライバーはD3DDDIERR_DEVICEREMOVEDを返すことができます。
Direct3D 10.1 バージョンの ResourceCopyRegion には、ドライバーの CreateResource(D3D10) 関数の呼び出しで作成されたソースリソースと移行先リソースのD3D10DDIARG_CREATERESOURCEの ResourceDimension メンバーに関して、Direct3D 10.0 バージョンと大きな機能の違いがあります。 Direct3D 10.0 バージョンの ResourceCopyRegion の場合、ソース リソースと移行先リソースの D3D10DDIARG_CREATERESOURCE の ResourceDimension メンバーが一致している必要があります。 Direct3D 10.1 バージョンの ResourceCopyRegion を使用すると、D3D10DDIARG_CREATERESOURCEの ResourceDimension メンバーをソース リソースと移行先リソースに対して少し緩和できます。 Direct3D 10.1 バージョンの ResourceCopyRegion を使用すると、Tex2D 変換先リソース上の Tex2D ソース リソースまたは Tex2D 変換先リソース上の TexCube ソース リソースをコピーできます。 さらに、リソース レベルでの TexCube の違いは、Direct3D バージョン 10.1 では失われます。 Direct3D 10.1 バージョンの ResourceCopyRegion は、TexCube をコピーできるかどうかのみを表します。 Direct3D バージョン 10.0 では、リソースのコピー、複数のレンダー ターゲットの検証など (つまり、リソースの種類を同一にする必要があるさまざまな操作) には、リソースの種類を考慮する TexCube の区別がすべて含まれていました。 Direct3D バージョン 10.1 では、ランタイムは Tex2D のみを決定できます。
次のセクションでは、コピーと変換の条件の一覧を示します。
コピー
コピーの場合、 ResourceCopyRegion は、次の条件を使用して、ドライバーの CreateResource(D3D10) 関数を使用してソースリソースとコピー先リソースが作成されたことを確認します。
- ターゲット リソースは、D3D10DDIARG_CREATERESOURCE構造体の Usage メンバーに設定された D3D10_DDI_USAGE_IMMUTABLE 値を使用して作成されませんでした。
- ソース リソースまたは変換先リソースが、D3D10DDIARG_CREATERESOURCEの BindFlags メンバーにD3D10_DDI_BIND_DEPTH_STENCIL ビットを設定している場合、または複数サンプリングされたリソースである場合、 ResourceCopyRegion は pSrcBox パラメーターが NULL であることを確認しますが、 DstX、 DstY、 DstZ パラメーターは 0 です。
- サブリソース インデックスは範囲内です。
- 配置の制限は座標に適用されます。
- ソースと宛先のリソースは、まったく同じサブリソースの一部ではありません。
- D3D10DDIARG_CREATERESOURCEの Format メンバーで指定されたソースとターゲットの各リソース形式は、同じ型なしのグループ内にあります。
- ソースリソースと移行先リソースのサンプル数と品質レベルは同じである必要があります。単一サンプリング リソースを除き、同じ数のサンプルのみを含める必要があります。
変換
変換の場合、 ResourceCopyRegion は、次の条件を使用して、ドライバーの CreateResource(D3D10) 関数を通じてソース リソースと変換先リソースが作成されたことを確認します。
- ターゲット リソースは、D3D10DDIARG_CREATERESOURCE構造体の Usage メンバーに設定された D3D10_DDI_USAGE_IMMUTABLE 値を使用して作成されませんでした。
- ソース リソースまたは変換先リソースが、D3D10DDIARG_CREATERESOURCEの BindFlags メンバーにD3D10_DDI_BIND_DEPTH_STENCIL ビットを設定している場合、または複数サンプリングされたリソースである場合、 ResourceCopyRegion は pSrcBox パラメーターが NULL であることを確認しますが、 DstX、 DstY、 DstZ パラメーターは 0 です。
- サブリソース インデックスは範囲内です。
- 配置の制限は座標に適用されます。
- ソースと宛先のリソースは、まったく同じサブリソースの一部ではありません。
- D3D10DDIARG_CREATERESOURCEの Format メンバーで指定されたソースとターゲットの各リソース形式は、同じ型なしのグループ内にあります。
- D3D10DDIARG_CREATERESOURCEの Format メンバーで指定されている各ソースおよびターゲット リソースの形式は、適切な変換操作をサポートします。
- ソースリソースと移行先リソースのサンプル数と品質レベルは同じである必要があります。単一サンプリング リソースを除き、同じ数のサンプルのみを含める必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
対象プラットフォーム | デスクトップ |
Header | d3d10umddi.h (D3d10umddi.h を含む) |