summaryrefslogtreecommitdiff
path: root/Writing a UI library in Golang.md
diff options
context:
space:
mode:
authorJasper Ras <jras@hostnet.nl>2025-06-04 09:14:47 +0200
committerJasper Ras <jras@hostnet.nl>2025-06-04 09:14:47 +0200
commit32422d2b9001291d7136036581122cf4b4eec75c (patch)
tree356615063a97796665adfc71318573e790ca285d /Writing a UI library in Golang.md
parent9bd8cdf2ecc2b60f873b393122b19985cbc4587c (diff)
vault backup: 2025-06-04 09:14:47HEADmain
Diffstat (limited to 'Writing a UI library in Golang.md')
-rw-r--r--Writing a UI library in Golang.md25
1 files changed, 25 insertions, 0 deletions
diff --git a/Writing a UI library in Golang.md b/Writing a UI library in Golang.md
new file mode 100644
index 0000000..4161204
--- /dev/null
+++ b/Writing a UI library in Golang.md
@@ -0,0 +1,25 @@
+---
+tags:
+ - golang
+ - ui
+---
+Some interesting libraries to look at that render their own pixels instead of relying on C/C++ bindings:
+- Fyne
+- Gio
+
+What to look out for:
+- How do they render to the screen? Do they use OpenGL, Vulkan or a software renderer? Do they use OS provided primitives?
+- How do they handle events and propagate them through the UI?
+- How do they manage positioning and sizing of UI elements?
+- How do they define common elements such as buttons, lists, etc and how do they implement their behaviour.
+- How do they make it cross-platform, if at all?
+
+
+### Renderer
+What kind of renderer to use? Build a software renderer or use hardware assisted rendering via openGL or Vulkan?
+Gemini recommends to start with a software renderer and optimize later. Or if we want to learn more about graphics programming we start with OpenGL.
+
+## Basics
+- Window creation (canvas): check golang.org/x/mobile/app or go-gl/glfw.
+- Event loop to handle events
+- Basic shape drawing primitives \ No newline at end of file