ドキュメント
WindowComponent
1 min read
ウィンドウを作成するコンポーネントです。
window_component.hpp
class WindowComponent : public Component
{
public:
WindowComponent
(
MOD mod,
unsigned int width,
unsigned int height,
unsigned char bg_color_R,
unsigned char bg_color_G,
unsigned char bg_color_B,
unsigned char bg_color_A
);
~WindowComponent() = default;
std::string getID();
void configure();
private:
std::shared_ptr<spa::gui::Window<>> window;
};
幅、高さ、背景色を指定できます。
window_component.cpp
void WindowComponent::configure()
{
spa::utils::check::key(
mod.store->window
, window->windowID
, __FILE__
, __LINE__);
window->open = mod.store->window.at(window->windowID);
window->fps = mod.store->fps;
return;
}
window->openがtrueの場合、windowオブジェクトをレンダリングします。falseの場合、windowオブジェクトを破棄します。
configureではopenの値をmod.store->window.at(window->windowID)に設定しています。window->windowIDはgetIDメソッドで取得でき、windowIDがわかる場所ならどこでもwindowを作成または破棄することができます。
fpsを設定してタイトルに表示しています。
CaptureComponentでキャプチャ中のコンポーネントからWindowComponentでサブウィンドウを生成する場合、子コンポーネントにCaptureComponentを追加してください。
別キャプチャとして扱いますので、元キャプチャと干渉しなくなります。spa::config::capture::MODEはON、OFFどちらの値でも良いです。
2026/02/02 directX3d12 でマルチウィンドウの破棄ができない現象が起きました。
directX3d11に変更しました。(SDLにお任せしました。)
DirectX 11とDirectX 12の主な違いは、DirectX 12がハードウェアへのアクセスをより低レベルで行うことで、CPUのオーバーヘッドを削減しGPUの利用効率を向上させる点にあります。DirectX 11は高レベルAPIで扱いやすい反面、DirectX 12はより多くの制御を開発者に与え、高いパフォーマンスを引き出せるが、要求スペックや開発の複雑さは増します。
低レベルAPIは難しいですよね。
コメントを残す