【DirectX11】リソース(Resource)・バッファー(Buffer)・サブリソース(SubResource)について

【DirectX11】リソース(Resource)・バッファー(Buffer)・サブリソース(SubResource)について

目次

はじめに

リソース(Resource)、バッファー(Buffer)、サブリソース(SubResource)はDirectXを使用していると必ず出てくるワードたちです。

この記事では、これらのワードをDirectXというコンテキストを元にできるだけかみ砕いてわかりやすく解説していきます。

事前知識

DirectX周りで基礎的な知識について不安がある場合、以下の記事を読んでからのほうが理解がし易いと思います。合わせて御覧ください

TODO : リンクを貼る

まずは全体をふんわり理解する

リソース、バッファー、サブリソースこれらのワードはどれも深く結びついています。

端的に説明すると以下のような説明になります。

  • バッファー : リソースを配置したメモリ上の領域の呼び方
  • リソース : データ本体
  • サブリソース : リソースの詳細データ

実際のDirectXのコードでは以下のようなメソッド、変数を使ってリソース・バッファ・サブリソースを作成されています。

  • D3D11_BUFFER_DESC
  • D3D11_SUBRESOURCE_DATA
  • CreateBuffer()
  • IASetVertexBuffers()

バッファについて詳しく

バッファはDirectXのコンテキストでは「メモリ上に連続でデータを記録する領域」という意味で使われ、この後の解説で出てくる「リソース」を格納できる領域のことでもあります。

よく使うバッファという言葉は、「とりあえず確保した領域」などの意味合いが多いですが、DirectXのコンテキストでは少し意味合いが異なることに注意が必要です。

このときの、「メモリ上」というワードで引っかかりが出ると思います。
DirectXを使っていると、RAM(CPU側)のことなのかVRAM(GPU側)のことなのかが重要になるからです。
答えとしては、ここで出てくるメモリが指しているのは「GPU上の」メモリつまりVRAMです。

CreateBufferメソッドを実行すると戻り値として「VRAM」上に生成したバッファ領域の「ハンドル(COMオブジェクト)」が取得できるので、CPU上でそのハンドルをIASetVertexBufferなどでGPU上で用意できている処理に使える領域として紐づけができます。

ポインタや参照を直接返さないのは、最適化や効率化を含めたリソース管理をより柔軟にベースのシステム側で行うためです。

VertexBufferのBufferはメモリ領域のというよりは、「頂点の配列」のようなニュアンスなのかなと思うようにしています。
この命名も理解に苦しむ一要因だと思います。。

リソースについて詳しく

詳しくといったものの、リソースは単純によく知られている言葉と置き換えができます。

データ = リソース、この理解でいいと思います。

データとリソースの違いは、どこにあるのかの違いで、以下のようなものだと考えていいと思います。

  • データ : CPUが扱うメモリ上(RAM)
  • リソース : GPUが扱うメモリ上(VRAM)

一つ違うのを上げるとすれば、CPU上で扱うデータをファイルだとしたら、GPU上で扱うリソースは、フォルダのようなイメージになることです。

同じデータにはかわりがないのですが、リソースのほうが構造化(サブリソースとして内部で分割している)されています。

サブリソース

サブリソースは、リソースの内部にあるデータの細かい塊です。

頂点バッファなどのバッファ系のリソースでは、基本的にサブリソースは1つなのですが、テクスチャ周りのリソースには内部に複数のサブリソースが含まれている場合が多いです。

これは、1つのリソースを複数の解像度で使いたい場合などに便利なのでこのように別れています。

サブリソースが有用なレイヤ「ミップマップ」などを理解すると理解しやすいと思います。
以下とても参考になる記事です。

【DirectX11】リソース(Resource)・バッファー(Buffer)・サブリソース(SubResource)について

https://daiki-iijima.github.io/2026/01/03/【DirectX11】リソース-Resource-・バッファー-Buffer-・サブリソース-SubResource-について/

Author

Daiki Iijima

Posted on

2026-01-03

Updated on

2025-12-31

Licensed under