ドキュメント

View Categories

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 11DirectX 12の主な違いは、DirectX 12がハードウェアへのアクセスをより低レベルで行うことで、CPUのオーバーヘッドを削減しGPUの利用効率を向上させる点にあります。DirectX 11は高レベルAPIで扱いやすい反面、DirectX 12はより多くの制御を開発者に与え、高いパフォーマンスを引き出せるが、要求スペックや開発の複雑さは増します。 

低レベルAPIは難しいですよね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です