summary refs log tree commit diff
path: root/gpu_display/examples/simple_open.rs
diff options
context:
space:
mode:
Diffstat (limited to 'gpu_display/examples/simple_open.rs')
-rw-r--r--gpu_display/examples/simple_open.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/gpu_display/examples/simple_open.rs b/gpu_display/examples/simple_open.rs
new file mode 100644
index 0000000..bb7b1a2
--- /dev/null
+++ b/gpu_display/examples/simple_open.rs
@@ -0,0 +1,25 @@
+use gpu_display::GpuDisplay;
+
+fn main() {
+    let mut disp = GpuDisplay::open_x(None::<&str>).unwrap();
+    let surface_id = disp.create_surface(None, 1280, 1024).unwrap();
+
+    let mem = disp.framebuffer(surface_id).unwrap();
+    for y in 0..1024 {
+        let mut row = [0u32; 1280];
+        for x in 0..1280 {
+            let b = ((x as f32 / 1280.0) * 256.0) as u32;
+            let g = ((y as f32 / 1024.0) * 256.0) as u32;
+            row[x] = b | (g << 8);
+        }
+        mem.as_volatile_slice()
+            .offset((1280 * 4 * y) as u64)
+            .unwrap()
+            .copy_from(&row);
+    }
+    disp.flip(surface_id);
+
+    while !disp.close_requested(surface_id) {
+        disp.dispatch_events();
+    }
+}