overflow: hidden/scroll scissor support, remove depth

This commit is contained in:
Aleksander
2025-09-25 23:21:11 +02:00
parent 8f75d451e4
commit eb12a6a319
28 changed files with 299 additions and 182 deletions

View File

@@ -77,7 +77,7 @@ fn load_testbed(
fn main() -> Result<(), Box<dyn std::error::Error>> {
init_logging();
let (gfx, event_loop, window, surface) = init_window()?;
let (gfx, event_loop, window, surface) = init_window("[-/=]: gui scale, F10: debug draw")?;
let inner_size = window.inner_size();
let mut swapchain_size = [inner_size.width, inner_size.height];
@@ -115,6 +115,8 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
render_context.update_viewport(&mut shared_context, swapchain_size, scale)?;
log::trace!("new swapchain_size: {swapchain_size:?}");
let mut debug_draw_enabled = false;
let mut profiler = profiler::Profiler::new(1000);
let mut frame_index: u64 = 0;
@@ -218,6 +220,11 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
..
} => {
if event.state == ElementState::Pressed {
if event.physical_key == PhysicalKey::Code(KeyCode::F10) {
debug_draw_enabled = !debug_draw_enabled;
testbed.layout().borrow_mut().mark_redraw();
}
if event.physical_key == PhysicalKey::Code(KeyCode::Equal) {
scale *= 1.25;
render_context
@@ -323,7 +330,12 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
.begin_rendering(tgt, WGfxClearMode::Clear([0.0, 0.0, 0.0, 0.1]))
.unwrap();
let primitives = wgui::drawing::draw(&testbed.layout().borrow_mut()).unwrap();
let draw_params = wgui::drawing::DrawParams {
layout: &testbed.layout().borrow_mut(),
debug_draw: debug_draw_enabled,
};
let primitives = wgui::drawing::draw(&draw_params).unwrap();
render_context
.draw(&mut shared_context, &mut cmd_buf, &primitives)
.unwrap();

View File

@@ -14,7 +14,9 @@ fn get_vulkan_library() -> &'static Arc<vulkano::VulkanLibrary> {
}
#[allow(clippy::type_complexity)]
pub fn init_window() -> anyhow::Result<(
pub fn init_window(
title: &str,
) -> anyhow::Result<(
Arc<WGfx>,
winit::event_loop::EventLoop<()>,
Arc<winit::window::Window>,
@@ -40,7 +42,11 @@ pub fn init_window() -> anyhow::Result<(
#[allow(deprecated)]
let window = Arc::new(
event_loop
.create_window(Window::default_attributes().with_transparent(true))
.create_window(
Window::default_attributes()
.with_transparent(true)
.with_title(title),
)
.unwrap(), // want panic
);
let surface = Surface::from_window(instance.clone(), window.clone())?;