PFND3D10DDI_RESOURCECOPY コールバック関数 (d3d10umddi.h)
ResourceCopy 関数は、ソース リソース全体をコピー先リソースにコピーします。
構文
PFND3D10DDI_RESOURCECOPY Pfnd3d10ddiResourcecopy;
void Pfnd3d10ddiResourcecopy(
D3D10DDI_HDEVICE unnamedParam1,
D3D10DDI_HRESOURCE unnamedParam2,
D3D10DDI_HRESOURCE unnamedParam3
)
{...}
パラメーター
unnamedParam1
hDevice [in]
ディスプレイ デバイスへのハンドル (グラフィックス コンテキスト)。
unnamedParam2
hDstResource [in] を する
コピー先のリソースへのハンドル。
unnamedParam3
hSrcResource の [in]
コピー元のソース リソースへのハンドル。
戻り値
何一つ
備考
ドライバーは、pfnSetErrorCb コールバック関数を使用してエラー コードを設定できます。
Microsoft Direct3D ランタイムは、ユーザー モード ディスプレイ ドライバーの ResourceCopy 関数を呼び出して、指定したソース リソースから指定したターゲット リソースにコピーするようにドライバーに通知します。 ソース リソースと移行先リソースを同じリソースにすることはできません。 ソース リソースと移行先リソースの両方が同じ種類のリソースであり、同じディメンションを持つ必要があります。 両方のリソースの形式の種類 (DXGI_FORMAT型指定された値) は、相互にキャスト可能である必要があります。 ソースリソースと移行先リソースを現在マップすることはできません。 さらに、リソース作成フラグは、リソースがコピー操作に参加できるかどうかを制限します。
ドライバーは、D3DDDIERR_DEVICEREMOVEDを除き、エラーが発生しないようにする必要があります。 したがって、D3DDDIERR_DEVICEREMOVEDを除き、pfnSetErrorCb 関数の呼び出しでドライバーがエラーを渡した場合、Direct3D ランタイムはエラーが重大であると判断します。 デバイスが削除された場合でも、ドライバーはD3DDDIERR_DEVICEREMOVEDを返す必要はありません。ただし、デバイスの削除が ResourceCopy の操作 妨げていた場合 (通常は発生しないはずです)、ドライバーはD3DDDIERR_DEVICEREMOVEDを返すことができます。
ResourceCopy の Direct3D 10.1 バージョンは、ドライバーの CreateResource(D3D10) 関数の呼び出しで作成されたソースリソースと宛先リソースの D3D10DDIARG_CREATERESOURCE の ResourceDimension メンバーに関して、Direct3D 10.0 バージョンと大きな機能の違いがあります。 ResourceCopyの Direct3D 10.0 バージョンの場合、ソース リソースと移行先リソースのD3D10DDIARG_CREATERESOURCEの ResourceDimension メンバーが一致している必要があります。 ResourceCopy の Direct3D 10.1 バージョンでは、ソースリソースと移行先リソースのD3D10DDIARG_CREATERESOURCEの ResourceDimension メンバーが少し緩和されます。 ResourceCopy の Direct3D 10.1 バージョンでは、TexCube 変換先リソース上の Tex2D ソース リソースまたは Tex2D 変換先リソース上の TexCube ソース リソースのコピーが可能です。 さらに、Direct3D バージョン 10.1 では、リソース レベルでの TexCube の違いは失われます。 ResourceCopy の Direct3D 10.1 バージョンは、TexCube をコピーできるかどうかを表すだけです。 Direct3D バージョン 10.0 では、リソースのコピー、複数のレンダー ターゲットの検証など (つまり、リソースの種類が同じである必要があるさまざまな操作) には、リソースの種類を考慮する TexCube の区別がすべて含まれていました。 Direct3D バージョン 10.1 では、ランタイムは Tex2D のみを決定できます。
次のセクションでは、コピーと変換の条件を示します。
コピー
コピーの場合、ResourceCopy では、次の条件でドライバーの CreateResource(D3D10) 関数を使用して、ソースリソースと移行先リソースが作成されたことを確認します。
- ターゲット リソースは、D3D10DDIARG_CREATERESOURCE 構造体の Usage メンバーに設定されたD3D10_DDI_USAGE_IMMUTABLE値を使用して作成されませんでした。
- ソース リソースとターゲット リソースは、同じリソースの種類と次元 (バッファー、1 次元 (1-D) テクスチャなど) で作成され、D3D10DDIARG_CREATERESOURCEの ResourceDimension メンバーに同じ値を設定します。
- ソース リソースと移行先リソースは、まったく同じリソースの一部ではありません。
- D3D10DDIARG_CREATERESOURCEの Format メンバーで指定されている各ソースとターゲットのリソース形式は、同じ型指定なしグループ内にあります。
- ソース リソースと移行先リソースには、同じ数のサンプルと品質レベルが必要です。単一サンプリング リソースを除き、同じ数のサンプルのみを含める必要があります。
変換
変換の場合、ResourceCopy では、次の条件を満たすドライバーの CreateResource(D3D10) 関数を使用して、ソースとターゲットのリソースが作成されたことを確認します。
- ターゲット リソースは、D3D10DDIARG_CREATERESOURCE 構造体の Usage メンバーに設定されたD3D10_DDI_USAGE_IMMUTABLE値を使用して作成されませんでした。
- D3D10DDIARG_CREATERESOURCEの ResourceDimension メンバーで同じ値を設定することで、ソース リソースとターゲット リソースが同じリソースの種類 (バッファー、1 次元 (1-D) テクスチャなど) で作成されました。
- 変換元リソースと変換先リソースのディメンションが一致して変換されます。
- ソース リソースと移行先リソースは、まったく同じリソースの一部ではありません。
- D3D10DDIARG_CREATERESOURCEの Format メンバーで指定されている各ソースおよびターゲット リソース形式は、適切な変換操作をサポートします。 mipped ブロック圧縮リソースの場合、ディメンションはすべて 2 の累乗として検証されます。
- ソース リソースと移行先リソースには、同じ数のサンプルと品質レベルが必要です。単一サンプリング リソースを除き、同じ数のサンプルのみを含める必要があります。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | d3d10umddi.h (D3d10umddi.h を含む) |
関連項目
pfnSetErrorCb の