mirror of
https://github.com/slendidev/lunar.git
synced 2026-03-16 21:56:50 +02:00
@@ -719,7 +719,8 @@ auto Application::run() -> void
|
|||||||
float fps { 0.0f };
|
float fps { 0.0f };
|
||||||
while (m_running) {
|
while (m_running) {
|
||||||
GZoneScopedN("Frame");
|
GZoneScopedN("Frame");
|
||||||
if (m_wayland) {
|
{
|
||||||
|
assert(m_wayland);
|
||||||
m_wayland->dispatch();
|
m_wayland->dispatch();
|
||||||
m_wayland->flush();
|
m_wayland->flush();
|
||||||
}
|
}
|
||||||
@@ -1082,45 +1083,43 @@ auto Application::run() -> void
|
|||||||
render_hands(gl, view_projection);
|
render_hands(gl, view_projection);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_wayland) {
|
assert(m_wayland);
|
||||||
auto const wayland_draw_extent { m_renderer->draw_extent() };
|
|
||||||
auto const draw_width { static_cast<float>(
|
auto const wayland_draw_extent { m_renderer->draw_extent() };
|
||||||
wayland_draw_extent.width) };
|
auto const draw_width { static_cast<float>(
|
||||||
auto const draw_height { static_cast<float>(
|
wayland_draw_extent.width) };
|
||||||
wayland_draw_extent.height) };
|
auto const draw_height { static_cast<float>(
|
||||||
if (draw_width > 0.0f && draw_height > 0.0f) {
|
wayland_draw_extent.height) };
|
||||||
gl.set_transform(smath::Mat4::identity());
|
if (draw_width > 0.0f && draw_height > 0.0f) {
|
||||||
gl.set_culling(false);
|
gl.set_transform(smath::Mat4::identity());
|
||||||
gl.use_pipeline(m_renderer->wayland_pipeline());
|
gl.set_culling(false);
|
||||||
for (auto *surface : m_wayland->surfaces()) {
|
gl.use_pipeline(m_renderer->wayland_pipeline());
|
||||||
auto buffer { surface->current_buffer() };
|
for (auto *surface : m_wayland->surfaces()) {
|
||||||
if (!buffer) {
|
auto buffer { surface->current_buffer() };
|
||||||
continue;
|
if (!buffer) {
|
||||||
}
|
continue;
|
||||||
auto texture { make_shm_texture(*buffer) };
|
|
||||||
if (!texture) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
auto const width { static_cast<float>(buffer->width) };
|
|
||||||
auto const height { static_cast<float>(
|
|
||||||
buffer->height) };
|
|
||||||
auto const size { smath::Vec2 {
|
|
||||||
(width / draw_width) * 2.0f,
|
|
||||||
(height / draw_height) * 2.0f,
|
|
||||||
} };
|
|
||||||
auto const pos { smath::Vec2 {
|
|
||||||
-1.0f, 1.0f - size.y() } };
|
|
||||||
auto image { m_renderer->create_image(
|
|
||||||
*texture, vk::ImageUsageFlagBits::eSampled) };
|
|
||||||
gl.set_texture(&image);
|
|
||||||
gl.draw_rectangle(pos, size);
|
|
||||||
gl.flush();
|
|
||||||
gl.set_texture(std::nullopt);
|
|
||||||
m_renderer->destroy_image_later(image);
|
|
||||||
}
|
}
|
||||||
gl.use_pipeline(m_renderer->mesh_pipeline());
|
auto texture { make_shm_texture(*buffer) };
|
||||||
gl.set_culling(true);
|
if (!texture) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
auto const width { static_cast<float>(buffer->width) };
|
||||||
|
auto const height { static_cast<float>(buffer->height) };
|
||||||
|
auto const size { smath::Vec2 {
|
||||||
|
(width / draw_width) * 2.0f,
|
||||||
|
(height / draw_height) * 2.0f,
|
||||||
|
} };
|
||||||
|
auto const pos { smath::Vec2 { -1.0f, 1.0f - size.y() } };
|
||||||
|
auto image { m_renderer->create_image(
|
||||||
|
*texture, vk::ImageUsageFlagBits::eSampled) };
|
||||||
|
gl.set_texture(&image);
|
||||||
|
gl.draw_rectangle(pos, size);
|
||||||
|
gl.flush();
|
||||||
|
gl.set_texture(std::nullopt);
|
||||||
|
m_renderer->destroy_image_later(image);
|
||||||
}
|
}
|
||||||
|
gl.use_pipeline(m_renderer->mesh_pipeline());
|
||||||
|
gl.set_culling(true);
|
||||||
}
|
}
|
||||||
} };
|
} };
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user