Closed caffeine0coffee closed 2 years ago
中途半端にやってしまうと後々困るので、ここで一気に変えたい 図の通り、従来のbaseをApplicationEngine, RenderEngine, UiEngineに役割分担させる予定
WindowにはGLFW WindowとImGui Windowの2つがあり、それぞれGeneral / Renderの2つの属性を持つ。
General GLFW Window | RenderEngineの描画を受け付けない。任意個のImGui Windowを所有することができる。 |
Render GLFW Window | RenderEngineの描画を受け付ける。任意個のImGui Windowを所有することができる。 |
General ImGui Window | RenderEngineの描画を受け付けない。1つのGLFW Windowに属する必要がある |
Render ImGui Window | RenderEngineの描画を受け付ける。1つのGLFW Windowに属する必要がある |
GLFW Window 1つに対して1つのControlContextが共有される。 ControlContextにはマウスやキーボードの入力が含まれる。
RenderEngine
, AppEngine
, GlfwNativeWindow
, RenderTarget
, RenderContent
にクラスを分離し、最低限のプレゼンテーションを実現させることができた。
スクショでは1.0立方のSingleColorCube
を座標(2.0, 2.0, 2.0)
から見下ろしている。
いくつかの外部ライブラリを追加した
clangとclang-formatの導入も行った そのうちGitHub Actionsでフォーマットの検証をするようにしたい
ImGuiVirtualWindowを実装し、main
ブランチと同じ実行結果を得ることができた。
feat: present shape!! 時点でRender{Target | Content}
だったものは BasicRender{Target | Content}
とした。
Basicじゃない方にはWindow.draw()
に必要なインターフェースのみを残し、shapes依存のVertex, DescriptorSetLayoutなどに合わせた具体的な実装をBasicRender{Target | Content}
とした。
というより、ライブラリ的には「shapesがBasic~~
に依存している」という構造。
main
の再現ができたので、この時点でmain
へのmergeを行う。
一枚岩状態だったBase
クラスにさようなら。
Camera, Mouse, Keyboardなどのコンテキストをクラスとして定義し直す それに伴い、それぞれのコンテキストのUpdate関数はそれぞれのクラスにメソッドとして属することになる なので、それぞれのコンテキストをapp側にもたせて、制御するようにしたい