--- nono/vm/renderer.h 2026/04/29 17:05:17 1.1.1.9 +++ nono/vm/renderer.h 2026/04/29 17:05:25 1.1.1.10 @@ -20,6 +20,7 @@ class PlaneVRAMDevice; class Syncer; +class VideoCtlrDevice; // 更新情報交換用構造体 struct ModifyInfo @@ -54,7 +55,7 @@ class Renderer : public ThreadDevice public: Renderer(); - virtual ~Renderer() override; + ~Renderer() override; bool Init() override; void ResetHard(bool poweron) override; @@ -88,6 +89,9 @@ class Renderer : public ThreadDevice // 画面合成。更新があれば true を返す。(派生クラス側で用意) virtual bool RenderMain() = 0; + // RGBX から RGB への変換。 + void RGBXtoRGB(BitmapRGB& dst, const BitmapRGBX& src); + DECLARE_MONITOR_CALLBACK(MonitorUpdate); // ウィンドウとして表示される画面はオプションや設定などで縮尺を変える @@ -144,6 +148,12 @@ class Renderer : public ThreadDevice private: // スレッドの終了を指示 void Terminate() override; + + static void RGBXtoRGB_gen(BitmapRGB& dst, const BitmapRGBX& src); +#if defined(HAVE_AVX2) + static void RGBXtoRGB_avx2(BitmapRGB& dst, const BitmapRGBX& src); + bool enable_avx2 {}; +#endif }; // @@ -154,9 +164,15 @@ class X68030Renderer : public Renderer using inherited = Renderer; public: X68030Renderer(); - virtual ~X68030Renderer() override; + ~X68030Renderer() override; + bool Init() override; bool RenderMain() override; + + private: + BitmapRGBX bitmap32 {}; + + VideoCtlrDevice *videoctlr {}; }; // @@ -167,20 +183,24 @@ class LunaRenderer : public Renderer using inherited = Renderer; public: LunaRenderer(); - virtual ~LunaRenderer() override; + ~LunaRenderer() override; + bool Init() override; bool RenderMain() override; + + private: + BitmapRGBX textbmp {}; }; // -// NEWS レンダラ +// 何もしないレンダラ // -class NewsRenderer : public Renderer +class NopRenderer : public Renderer { using inherited = Renderer; public: - NewsRenderer(); - virtual ~NewsRenderer() override; + NopRenderer(); + ~NopRenderer() override; bool RenderMain() override; };