0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Vulkan Basic Programming 2 バッファの作成

0
Last updated at Posted at 2026-10-09

前回の記事(イントロダクション)

この記事ではまずVulkanにおけるバッファについて短く説明する。

簡単に言えばGPUでプログラムを処理するときに使う、CPUから送りこむデータの事を指す

バッファ?

GPUに送り込むデータを格納する箱、またはデータの集まりとなる。

Vulkanでは、バッファとは、C/C++に例えると
コンテナ(vectorのようなやつ)に近い。以下のC++疑似コードを
想像して欲しい

.cpp
VK_STORAGE_BUFFER buffer[bufferSize];

VK_STORAGE_BUFFERという構造体(バッファ)を宣言して、その配列数を宣言している。
以下のVulkanBufferCreateInfoはこの疑似コードの宣言の仕方をベースに、バッファの構造体の型(sType),用途(usage),Vulkanの中核であるコマンドに関わるshareingModeの設定を行う
(SharingModeについてはコマンドの記事で説明を行う)

.cpp
VkBufferCreateInfo bufferCreateInfo{};
bufferCreateInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
//この構造体を定義するよ
bufferCreateInfo.size = bufferSize;
bufferCreateInfo.usage = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT;
//このバッファはストレージバッファとして使うよ
bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
//Vulkanの基本設定。バッファの最適化が基本的に無駄なく行われる。

最後にバッファを作成(ストレージバッファ)

 if (vkCreateBuffer(device, &bufferCreateInfo, nullptr, &buffer) != VK_SUCCESS) {
throw std::runtime_error("ストレージバッファの作成に失敗しました。 failed to create storage buffer");
}

ストレージバッファの作成

ストレージバッファはCPUとGPU間でデータをやり取りするための往復荷物みたいなものである。
お互いのプロセッサでここに情報を読み書きしたのち、その内容を別のバッファにコピーする

ここで先ほどのバッファーの作り方にならい、
ストレージバッファを宣言、設定を以下のように詰めていく

.cpp
VkBufferCreateInfo bufferCreateInfo{};
bufferCreateInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;//このクリエイトインフォの型
bufferCreateInfo.size = bufferSize;
//バッファの要素数
bufferCreateInfo.usage = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT;
//バッファは何に使うのか?を定義
//ストレージバッファだよね
bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
//詳しくは別記事の予定であるコマンドの説明で

この章の範囲を超えるため、詳しくは別の記事で説明するものの、バッファを作成した後は
論理デバイスオブジェクトを使って、GPUドライバーを通じてGPUにバッファのデータや命令を送る

.cpp
if (vkCreateBuffer(device, &bufferCreateInfo, nullptr, &buffer) != VK_SUCCESS) {
throw std::runtime_error("ストレージバッファの作成に失敗しました。 failed to create storage buffer");
}

次の記事でディスクリプタの説明に移る
ディスクリプタはバッファに格納したデータの使い方を説明したデータや配列のようなものになる

次回の記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?