ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

ImGuiのBeginCombo

ImGuiを使っているとき、BeginComboの書き方をよく忘れるのでメモ。
基本は、BeginCombo()で始めて、Selectable()で項目追加、EndCombo()で終了。

std::vector<std::string> itemList;
static const char* s_currentItem = nullptr;
if (ImGui::BeginCombo("Combo", s_currentItem)) {
	for (int i = 0; i < itemList.size(); ++i) {
		const bool is_selected = (s_currentItem == itemList.c_str());
		if (ImGui::Selectable(itemList[i].c_str(), is_selected))
			s_currentItem = itemList[i].c_str();
		if (is_selected)
			SetItemDefaultFocus();
	}
	EndCombo();
}

検索していたら、ImGuiのインタラクティブなマニュアルを見つけた。
pthom.github.io
このページ自体がImGuiで作られていて、さまざまな項目がメニューに実装されている。
詳しく知りたい項目を選ぶと、そのコードが表示されるので、非常に分かりやすい。