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

D3D10_USAGE

列挙型
基底型i4

メンバー 4

名前10進16進説明
D3D10_USAGE_DEFAULT00x0GPU による読み取りと書き込みの両方のアクセスを必要とするリソースです。最も一般的に選択される使用方法です。
D3D10_USAGE_IMMUTABLE10x1GPU から読み取ることのみが可能なリソースです。GPU から書き込むことはできず、CPU からはまったくアクセスできません。この種類のリソースは作成後に変更できないため、作成時に初期化しなければなりません。
D3D10_USAGE_DYNAMIC20x2GPU と CPU の両方(CPU は書き込みのみ)からアクセスできるリソースです。動的リソースは、CPU によって 1 フレームあたり少なくとも 1 回更新されるリソースに適した選択肢です。CPU 側から動的リソースに書き込むには、Map メソッドを使用します。GPU 側から動的リソースに書き込むには、CopyResource または CopySubresourceRegion を使用できます。
D3D10_USAGE_STAGING30x3GPU から CPU へのデータ転送(コピー)をサポートするリソースです。

公式ドキュメント

レンダリング時に想定されるリソースの使用方法を識別します。この使用方法は、リソースが CPU および GPU のいずれか、または両方からアクセス可能かどうかを直接反映します。

解説(Remarks)

アプリケーションは、リソースをどのように使用する予定か(その使用方法)をリソースの記述で指定します。リソースを作成するための構造体には、D3D10_TEXTURE1D_DESCD3D10_TEXTURE2D_DESCD3D10_TEXTURE3D_DESCD3D10_BUFFER_DESCD3DX10_IMAGE_LOAD_INFO など、いくつかのものがあります。

Direct3D 9 と Direct3D 10 の違い:

Direct3D 9 では、リソースの作成時に、そのリソースを作成するメモリの種類を(D3DPOOL を使用して)指定します。機能とパフォーマンスの最適な組み合わせが得られるメモリプールを判断するのは、アプリケーションの役割でした。

Direct3D 10 では、アプリケーションがリソースを作成するメモリの種類(プール)を指定することはなくなりました。代わりにリソースの使用目的を指定し、最適なパフォーマンスが得られるメモリの種類は、ランタイムが(ドライバーおよびメモリマネージャーと連携して)選択します。

リソースの使用方法に関する制限

各使用方法は、機能とパフォーマンスのトレードオフを決定づけます。一般に、リソースへのアクセスは次の API で行います。 次の表を使用して、CPU および GPU からリソースにアクセスする必要がある方法を最もよく表す使用方法を選択してください。当然ながら、パフォーマンス上のトレードオフが生じます。
リソースの使用方法 Default Dynamic Immutable Staging
GPU からの読み取り 可¹ 1, 2
GPU からの書き込み 可¹ 1, 2
CPU からの読み取り 1, 2
CPU からの書き込み 1, 2

リソースのバインドオプション

パフォーマンスを最大化するため、すべてのリソース使用方法をパイプラインの入力リソースまたは出力リソースとして使用できるわけではありません。次の表は、これらの制限を示しています。
リソースをバインドできる対象 Default Dynamic Immutable Staging
ステージへの入力 可³ 可⁴
ステージからの出力 可³
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum D3D10_USAGE : int {
    D3D10_USAGE_DEFAULT = 0,
    D3D10_USAGE_IMMUTABLE = 1,
    D3D10_USAGE_DYNAMIC = 2,
    D3D10_USAGE_STAGING = 3
} D3D10_USAGE;
public enum D3D10_USAGE : int
{
    D3D10_USAGE_DEFAULT = 0,
    D3D10_USAGE_IMMUTABLE = 1,
    D3D10_USAGE_DYNAMIC = 2,
    D3D10_USAGE_STAGING = 3,
}
Public Enum D3D10_USAGE As Integer
    D3D10_USAGE_DEFAULT = 0
    D3D10_USAGE_IMMUTABLE = 1
    D3D10_USAGE_DYNAMIC = 2
    D3D10_USAGE_STAGING = 3
End Enum
import enum

class D3D10_USAGE(enum.IntEnum):
    D3D10_USAGE_DEFAULT = 0
    D3D10_USAGE_IMMUTABLE = 1
    D3D10_USAGE_DYNAMIC = 2
    D3D10_USAGE_STAGING = 3
// D3D10_USAGE
pub const D3D10_USAGE_DEFAULT: i32 = 0;
pub const D3D10_USAGE_IMMUTABLE: i32 = 1;
pub const D3D10_USAGE_DYNAMIC: i32 = 2;
pub const D3D10_USAGE_STAGING: i32 = 3;
// D3D10_USAGE
const (
	D3D10_USAGE_DEFAULT int32 = 0
	D3D10_USAGE_IMMUTABLE int32 = 1
	D3D10_USAGE_DYNAMIC int32 = 2
	D3D10_USAGE_STAGING int32 = 3
)
const
  D3D10_USAGE_DEFAULT = 0;
  D3D10_USAGE_IMMUTABLE = 1;
  D3D10_USAGE_DYNAMIC = 2;
  D3D10_USAGE_STAGING = 3;
// D3D10_USAGE
pub const D3D10_USAGE_DEFAULT: i32 = 0;
pub const D3D10_USAGE_IMMUTABLE: i32 = 1;
pub const D3D10_USAGE_DYNAMIC: i32 = 2;
pub const D3D10_USAGE_STAGING: i32 = 3;
const
  D3D10_USAGE_DEFAULT* = 0
  D3D10_USAGE_IMMUTABLE* = 1
  D3D10_USAGE_DYNAMIC* = 2
  D3D10_USAGE_STAGING* = 3
enum D3D10_USAGE : int {
    D3D10_USAGE_DEFAULT = 0,
    D3D10_USAGE_IMMUTABLE = 1,
    D3D10_USAGE_DYNAMIC = 2,
    D3D10_USAGE_STAGING = 3,
}
#define global D3D10_USAGE_DEFAULT   0x0
#define global D3D10_USAGE_IMMUTABLE 0x1
#define global D3D10_USAGE_DYNAMIC   0x2
#define global D3D10_USAGE_STAGING   0x3