mirror of
https://github.com/Relintai/sfw.git
synced 2024-12-20 21:06:49 +01:00
Added an anther demo to show how to use tu ui in user code.
This commit is contained in:
parent
7c408a08bf
commit
1bb589c3cf
@ -12,6 +12,7 @@
|
|||||||
#include "render_core/mesh_utils.h"
|
#include "render_core/mesh_utils.h"
|
||||||
#include "render_immediate/renderer.h"
|
#include "render_immediate/renderer.h"
|
||||||
#include "render_gui/gui.h"
|
#include "render_gui/gui.h"
|
||||||
|
#include "render_gui/imgui.h"
|
||||||
//#include "render_core/font.h"
|
//#include "render_core/font.h"
|
||||||
#include "core/sub_process.h"
|
#include "core/sub_process.h"
|
||||||
|
|
||||||
@ -298,6 +299,8 @@ void GameScene::render() {
|
|||||||
r->draw_texture(_render_tex, Rect2(100, 100, render_tex_size.x, render_tex_size.y));
|
r->draw_texture(_render_tex, Rect2(100, 100, render_tex_size.x, render_tex_size.y));
|
||||||
} else if (render_type == 14) {
|
} else if (render_type == 14) {
|
||||||
render_gui();
|
render_gui();
|
||||||
|
} else if (render_type == 15) {
|
||||||
|
render_gui_manual();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void GameScene::render_immediate(bool clear_screen) {
|
void GameScene::render_immediate(bool clear_screen) {
|
||||||
@ -424,6 +427,68 @@ void GameScene::render_gui(bool clear_screen) {
|
|||||||
GUI::render();
|
GUI::render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GameScene::render_gui_manual(bool clear_screen) {
|
||||||
|
Renderer *r = Renderer::get_singleton();
|
||||||
|
|
||||||
|
if (clear_screen) {
|
||||||
|
r->clear_screen(Color());
|
||||||
|
r->camera_2d_projection_set_to_window();
|
||||||
|
|
||||||
|
r->camera_3d_bind();
|
||||||
|
r->camera_3d_projection_set_to_perspective(AppWindow::get_singleton()->get_aspect());
|
||||||
|
}
|
||||||
|
|
||||||
|
GUI::new_frame();
|
||||||
|
|
||||||
|
|
||||||
|
ImGuiIO &io = ImGui::GetIO();
|
||||||
|
(void)io;
|
||||||
|
|
||||||
|
// Our state
|
||||||
|
static bool show_demo_window = true;
|
||||||
|
static bool show_another_window = false;
|
||||||
|
static ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
|
||||||
|
|
||||||
|
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
|
||||||
|
if (show_demo_window) {
|
||||||
|
ImGui::ShowDemoWindow(&show_demo_window);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to create a named window.
|
||||||
|
{
|
||||||
|
static float f = 0.0f;
|
||||||
|
static int counter = 0;
|
||||||
|
|
||||||
|
ImGui::Begin("Hello, world! This is an another demo!"); // Create a window called "Hello, world!" and append into it.
|
||||||
|
|
||||||
|
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
|
||||||
|
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
|
||||||
|
ImGui::Checkbox("Another Window", &show_another_window);
|
||||||
|
|
||||||
|
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
|
||||||
|
ImGui::ColorEdit3("clear color", (float *)&clear_color); // Edit 3 floats representing a color
|
||||||
|
|
||||||
|
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
|
||||||
|
counter++;
|
||||||
|
ImGui::SameLine();
|
||||||
|
ImGui::Text("counter = %d", counter);
|
||||||
|
|
||||||
|
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate);
|
||||||
|
ImGui::End();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Show another simple window.
|
||||||
|
if (show_another_window) {
|
||||||
|
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
|
||||||
|
ImGui::Text("Hello from another window!");
|
||||||
|
if (ImGui::Button("Close Me"))
|
||||||
|
show_another_window = false;
|
||||||
|
ImGui::End();
|
||||||
|
}
|
||||||
|
|
||||||
|
GUI::render();
|
||||||
|
}
|
||||||
|
|
||||||
void GameScene::toggle_thread() {
|
void GameScene::toggle_thread() {
|
||||||
if (_thread) {
|
if (_thread) {
|
||||||
_thread_running = false;
|
_thread_running = false;
|
||||||
|
@ -28,7 +28,7 @@ class GameScene : public Scene {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
enum RenderTypes {
|
enum RenderTypes {
|
||||||
RENDER_TYPE_MAX = 15
|
RENDER_TYPE_MAX = 16
|
||||||
};
|
};
|
||||||
|
|
||||||
virtual void input_event(const Ref<InputEvent> &event);
|
virtual void input_event(const Ref<InputEvent> &event);
|
||||||
@ -38,6 +38,7 @@ public:
|
|||||||
virtual void render_obj();
|
virtual void render_obj();
|
||||||
virtual void render_immediate_3d(bool clear_screen = true);
|
virtual void render_immediate_3d(bool clear_screen = true);
|
||||||
virtual void render_gui(bool clear_screen = true);
|
virtual void render_gui(bool clear_screen = true);
|
||||||
|
virtual void render_gui_manual(bool clear_screen = true);
|
||||||
|
|
||||||
void toggle_thread();
|
void toggle_thread();
|
||||||
static void test_thread_func(void *d);
|
static void test_thread_func(void *d);
|
||||||
|
Loading…
Reference in New Issue
Block a user