3 releases
new 0.1.2 | Apr 26, 2025 |
---|---|
0.1.1 | Mar 18, 2025 |
0.1.0 | Feb 21, 2025 |
#183 in Windows APIs
28 downloads per month
23KB
580 lines
Wingl
Minimales Win32 Fenster mit Opengl Kontext. Entwickelt für mein Retro Game Projekt Yinera.
Die Bibliothek verwendet ausschließlich die ASCII Methoden der Windows Api. (A-Suffix)
Verwendung
use wingl::*
let window = WindowBuilder::new().with_title(c"Mein Titel")
.with_size(Size::new(800, 600))
.build().unwrap();
let mut window = window.make_current();
window.request_gl_version((3, 3));
gl::load_with(|ptr| window.gl_context().get_proc_address(ptr) as *const _);
...
while app_is_running
{
window.poll();
while let Some(ev) = window.next() {...}
renderer.draw_next_frame();
window.swap_buffers();
}
drop(window);
Custom Zeichenfunktion während des Event-Loops
Die Windows API verlässt den Eventloop nicht, wenn das Fenster mit der Maus verschoben oder skaliert wird. Dadurch kann der GL Kontext nicht mehr außerhalb des Eventloops neu gezeichnet werden, bzw. erst den der Benutzer die Maus wieder los lässt.
Für diesen Fall gibt es einen optionalen paint-Callback, der durch das WM_PAINT Event ausgelöst wird.
window.set_paint_callback(Box::new(move |ct: &Box<ContextTarget>|
{
renderer.redraw_current_frame(ct.size());
}));
Dependencies
~118MB
~2M SLoC