初期化に必要な設定
前項では初期化の実装を記述しました。
このページでは初期化で使用した設定や関数の説明を記述していきます。
D3D11_BUFFER_DESC
ByteWidth | バッファのサイズです。 |
---|---|
Usage | バッファの読み込みや書き込みに関する使用用途を指定します。 最初にデータを書き込むだけであればD3D11_USAGE_DEFAULTで問題ありません。 |
BindFlags | 描画パイプライン上のどこでバインドするかを設定します。 今回は頂点バッファなのでD3D11_BIND_VERTEX_BUFFERを指定します。 |
CPUAccessFlags | CPUに対して許可するアクセス方法を設定できます。 特にCPUからアクセスしないのであれば0で問題ありません。 |
MiscFlags | リソースに対して特殊な設定が必要な場合に使用します。 基本的に0で問題ありません。 |
StructureByteStride | 構造化バッファーを表す場合のサイズです。 基本的に0を指定します。 公式の説明を読んでもよく分からないかと思います。 これはコンピュートシェーダで使用するStructureBuffer(GPUで使用する配列)を使用する際に指定します。 |
バッファの初期化に使用する設定はこれらの設定で行います。
基本的にはBindFlags以外は今回は重要ではありません。
CPU上でのバッファの操作などが出てきた際には他の設定も重要になってきますが…。
D3D11_SUBRESOURCE_DATA
pSysMem | 書き込むデータの先頭アドレス |
---|---|
SysMemPitch | これはテクスチャーでのみ使用します。 |
SysMemSlicePitch | こちらは3Dテクスチャ―でのみ使用します。 |
初期化時に書き込むバッファの指定はこのデータで行います。
テクスチャ―以外ではpSysMemのみ使用されます。
単純に書き込むデータのアドレスを渡すだけなので難しい設定はありません。
ID3D11Device::CreateBuffer
pDesc | 初期化する設定情報です。 |
---|---|
pInitialData | 初期化時に書き込むバッファです。 UsageがD3D11_USAGE_IMMUTABLE以外の場合はNULLも指定できます。 |
ppBuffer | 生成したID3D11Bufferの格納アドレスです。 |
初期化する情報が揃えばあとは初期化処理を呼び出すだけです!
基本的に設定を渡すだけなので特筆すべき点はありません。
これだけで頂点バッファの初期化が出来てしまいます。
DirectX以外の環境でも似たような実装なので流れさえ理解してしまえばすぐに実装できるかと思います。