feat: let user do something on each iteration
This commit is contained in:
@@ -299,6 +299,8 @@ private:
|
|||||||
wl_egl_window_resize(window->m_egl_window, width, height, 0, 0);
|
wl_egl_window_resize(window->m_egl_window, width, height, 0, 0);
|
||||||
glViewport(0, 0, width, height);
|
glViewport(0, 0, width, height);
|
||||||
xdg_surface_set_window_geometry(window->m_xsurface, 0, 0, width, height);
|
xdg_surface_set_window_geometry(window->m_xsurface, 0, 0, width, height);
|
||||||
|
window->m_width = width;
|
||||||
|
window->m_height = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void xtoplevel_handle_close(void *data,
|
static void xtoplevel_handle_close(void *data,
|
||||||
@@ -374,16 +376,19 @@ public:
|
|||||||
|
|
||||||
const char *vs_src = "attribute vec2 pos;\n"
|
const char *vs_src = "attribute vec2 pos;\n"
|
||||||
"uniform float angle;\n"
|
"uniform float angle;\n"
|
||||||
|
"varying vec2 vPos;\n"
|
||||||
"void main() {\n"
|
"void main() {\n"
|
||||||
" float c = cos(angle);\n"
|
" float c = cos(angle);\n"
|
||||||
" float s = sin(angle);\n"
|
" float s = sin(angle);\n"
|
||||||
" mat2 rot = mat2(c, -s, s, c);\n"
|
" mat2 rot = mat2(c, -s, s, c);\n"
|
||||||
" gl_Position = vec4(rot * pos, 0.0, 1.0);\n"
|
" gl_Position = vec4(rot * pos, 0.0, 1.0);\n"
|
||||||
|
" vPos = rot * pos;\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
const char *fs_src = "precision mediump float;\n"
|
const char *fs_src = "precision mediump float;\n"
|
||||||
|
"varying vec2 vPos;\n"
|
||||||
"void main() {\n"
|
"void main() {\n"
|
||||||
" gl_FragColor = vec4(1.0, 0.3, 0.2, 1.0);\n"
|
" gl_FragColor = vec4(vPos, 0.2, 1.0);\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
m_program = create_program(vs_src, fs_src);
|
m_program = create_program(vs_src, fs_src);
|
||||||
@@ -422,6 +427,8 @@ public:
|
|||||||
xdg_toplevel_add_listener(m_toplevel, &m_toplevel_listener, this);
|
xdg_toplevel_add_listener(m_toplevel, &m_toplevel_listener, this);
|
||||||
|
|
||||||
wl_surface_commit(m_wsurface);
|
wl_surface_commit(m_wsurface);
|
||||||
|
|
||||||
|
m_runnning = true;
|
||||||
}
|
}
|
||||||
~Window() {}
|
~Window() {}
|
||||||
|
|
||||||
@@ -429,11 +436,8 @@ public:
|
|||||||
Window(Window &&) = delete;
|
Window(Window &&) = delete;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Run() {
|
bool Running() {
|
||||||
m_runnning = true;
|
return m_runnning && wl_display_dispatch(AppState::GetInstance()->m_display) != -1;
|
||||||
printf("[DEBUG] Run(): display = %p\n", AppState::GetInstance()->m_display);
|
|
||||||
while (m_runnning && wl_display_dispatch(AppState::GetInstance()->m_display) != -1) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -10,7 +10,10 @@ int main(int argc, char **argv) {
|
|||||||
Renderer::GetInstance();
|
Renderer::GetInstance();
|
||||||
|
|
||||||
Window window(720, 480);
|
Window window(720, 480);
|
||||||
window.Run();
|
|
||||||
|
while (window.Running()) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user