PFND3D11_1DDI_RESOURCECOPYREGION コールバック関数 (d3d10umddi.h)

ソース サブリソースリージョンをコピー先サブリソース上の場所にコピーします。

構文

PFND3D11_1DDI_RESOURCECOPYREGION Pfnd3d111DdiResourcecopyregion;

void Pfnd3d111DdiResourcecopyregion(
       D3D10DDI_HDEVICE unnamedParam1,
       D3D10DDI_HRESOURCE unnamedParam2,
       UINT unnamedParam3,
       UINT unnamedParam4,
       UINT unnamedParam5,
       UINT unnamedParam6,
       D3D10DDI_HRESOURCE unnamedParam7,
       UINT unnamedParam8,
       const D3D10_DDI_BOX *unnamedParam9,
  [in] UINT CopyFlags
)
{...}

パラメーター

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構造体への ポインター。 pSrcBoxNULL の場合、ドライバーはソース サブレコード全体をコピー先にコピーする必要があります。

D3D10_DDI_BOX構造体のメンバーが left>=righttop>=bottom、front>=back などの場合、pSrcBox は空と見なされ、ResourceCopyRegion(D3D11_1) はコピー操作を実行できません。

[in] CopyFlags

コピー操作の特性を、D3D11_1_DDI_COPY_FLAGS列挙型の値のビットごとの OR として指定する値。

戻り値

なし

解説

ドライバーは、 pfnSetErrorCb コールバック関数を使用してエラー コードを設定できます。

Microsoft Direct3D ランタイムは、ユーザー モードディスプレイ ドライバーの ResourceCopyRegion(D3D11_1) 関数を呼び出して、指定したソース サブリソースリージョンから指定したコピー先サブリソース上の場所にコピーするようにドライバーに通知します。 ソースサブリソースと宛先サブリソースは、同じリソースの同じサブリソースにすることができます。 ソース リソースと変換先リソースの両方が同じ種類のリソースであり、互いに変換可能な形式の種類 (DXGI_FORMAT型指定された値) を持つ必要があります。

バッファーの場合、すべての座標はバイト単位である必要があります。テクスチャの場合は、すべての座標がピクセル単位である必要があります。 pSrcBox パラメーターが指すボックスは、ソース サブリソース領域または変換先サブリソースのエッジに拡張してはなりません。 ソースリソースと移行先リソースを現在マップすることはできません。 さらに、リソース作成フラグは、リソースがコピー操作に参加できるかどうかを制限します。

ドライバーは、D3DDDIERR_DEVICEREMOVEDを除き、エラーが発生しないようにする必要があります。 そのため、ドライバーが pfnSetErrorCb 関数の呼び出しで、D3DDDIERR_DEVICEREMOVEDを除くエラーを渡した場合、Direct3D ランタイムはエラーが重要であると判断します。 デバイスが削除された場合でも、ドライバーはD3DDDIERR_DEVICEREMOVEDを返す必要はありません。ただし、デバイスの削除が (通常は発生しない) 操作に干渉した場合、ドライバーはD3DDDIERR_DEVICEREMOVEDを返すことができます。

ドライバーは、コピーと変換を処理する switch ステートメントを含めることができる ResourceCopyRegion(D3D11_1) 関数を実装できます。 つまり、ドライバーは 1 つの ResourceCopyRegion(D3D11_1) を実装でき、D3D11_1DDI_DEVICEFUNCSpfnResourceCopyRegion メンバーと共に ResourceCopyRegion(D3D11_1) を指すD3D11_1DDI_DEVICEFUNCS構造体のpfnResourceConvertRegion メンバーを設定できます。 ただし、パフォーマンスを向上させるために、ドライバーは個別の ResourceCopyRegion(D3D11_1) 関数と ResourceConvertRegion (D3D11_1) 関数を実装できます。

次のセクションでは、コピーと変換の条件を示します。

コピー

コピーの場合、 ResourceCopyRegion(D3D11_1) は、次の条件を満たすドライバーの CreateResource(D3D11) 関数を使用して、ソースリソースとコピー先リソースが作成されたことを確認します。

  • D3D11DDIARG_CREATERESOURCE構造体のUsage メンバーにD3D10_DDI_USAGE_IMMUTABLE値が設定された宛先リソースが作成されませんでした。
  • ソース リソースまたはターゲット リソースのいずれかが、D3D10DDIARG_CREATERESOURCEの BindFlags メンバーにD3D10_DDI_BIND_DEPTH_STENCIL ビットが設定されている場合、または複数サンプリングされたリソースである場合、 ResourceCopyRegion(D3D11_1)pSrcBox パラメーターが NULL であることを確認しますが、 DstXDstYDstZ パラメーターは 0 です。
  • サブリソースインデックスは範囲内にあります。
  • 配置の制限は座標に適用されます。
  • ソースと宛先のリソースは、まったく同じサブリソースの一部ではありません。
  • D3D11DDIARG_CREATERESOURCEFormat メンバーで指定されたソースとターゲットの各リソース形式は、同じ型指定されていないグループ内にあります。
  • ソースリソースと移行先リソースのサンプル数と品質レベルは同じである必要があります。単一サンプリング リソースを除き、同じ数のサンプルのみを持つ必要があります。
ResourceCopyRegion(D3D11_1) では、変換先のオフセットによってオフセットされるソース ボックスがリソースに完全に収まることは保証されません。 ResourceCopyRegion(D3D11_1) では、サブリソースが現在マップされていないことも保証されません。

変換

変換の場合、 ResourceCopyRegion(D3D11_1) は、次の条件を持つドライバーの CreateResource(D3D11) 関数を使用して、ソースと宛先のリソースが作成されたことを確認します。

  • D3D11DDIARG_CREATERESOURCE構造体のUsage メンバーにD3D10_DDI_USAGE_IMMUTABLE値が設定された宛先リソースが作成されませんでした。
  • ソース リソースまたはターゲット リソースのいずれかが、D3D11DDIARG_CREATERESOURCEBindFlags メンバーにD3D10_DDI_BIND_DEPTH_STENCIL ビットが設定されている場合、または複数サンプリングされたリソースである場合、ResourceCopyRegion(D3D11_1)pSrcBox パラメーターが NULL であることを確認しますが、DstXDstYDstZ パラメーターは 0 です。
  • サブリソースインデックスは範囲内にあります。
  • 配置の制限は座標に適用されます。
  • ソースと宛先のリソースは、まったく同じサブリソースの一部ではありません。
  • D3D11DDIARG_CREATERESOURCEFormat メンバーで指定されたソースとターゲットの各リソース形式は、同じ型指定されていないグループ内にあります。
  • D3D11DDIARG_CREATERESOURCEFormat メンバーで指定されている各ソースとターゲットのリソース形式は、適切な変換操作をサポートします。
  • ソースリソースと移行先リソースのサンプル数と品質レベルは同じである必要があります。単一サンプリング リソースを除き、同じ数のサンプルのみを持つ必要があります。
ResourceCopyRegion(D3D11_1) では、サブリソースが現在マップされていないことが保証されません。 ResourceCopyRegion(D3D11_1) では、変換先のオフセットによってオフセットされるソース ボックスがリソースに完全に適合することも保証されません。

要件

   
サポートされている最小のクライアント Windows 8
サポートされている最小のサーバー Windows Server 2012
対象プラットフォーム デスクトップ
Header d3d10umddi.h (D3d10umddi.h を含む)

こちらもご覧ください

CreateResource(D3D11)

D3D10_DDI_BOX

D3D11DDIARG_CREATERESOURCE

D3D11_1DDI_DEVICEFUNCS

D3D11_1_DDI_COPY_FLAGS

pfnSetErrorCb