This code draws a triangle in a window using gogpu:
app := gogpu.NewApp(gogpu.DefaultConfig().
WithTitle("GoGPU - Triangle Example").
WithSize(800, 600))
app.OnDraw(func(dc *gogpu.Context) {
dc.DrawTriangleColor(gmath.DarkGray)
})
app.Run()
This code draws a circle using gg:
ctx := gg.NewContext(500, 500)
ctx.ClearWithColor(gg.White)
ctx.SetRGB(1, 0, 0)
ctx.DrawCircle(170, 170, 150)
ctx.Fill()
How do I combine these libraries to be able to draw a circle in a window ?
I do not see where the libraries communicate with each other.
Thanks
On Thursday, December 18, 2025 at 3:34:33 PM UTC-8 [email protected] wrote:
> Hi gophers!
>
> I'd like to introduce GoGPU — an ecosystem of Pure Go libraries for GPU
> programming. No CGO, no Rust, no C++ — just Go.
>
> The project started from a Reddit discussion about GUI/graphics support in
> Go:
>
> https://www.reddit.com/r/golang/comments/1pdw9i7/go_deserves_more_support_in_gui_development/
>
> And from the realization that fogleman/gg (the beloved 2D graphics
> library) has been unmaintained for years:
> https://github.com/fogleman/gg/issues/208
>
>
> WHAT WE'VE BUILT
> ----------------
>
> gogpu/wgpu — Pure Go WebGPU implementation
> Complete WebGPU types, validation layer, and hardware abstraction. Three
> backends: Vulkan (cross-platform), OpenGL ES (Windows/Linux), and Software
> (full CPU rasterizer for headless/CI). ~55K lines of pure Go.
> https://github.com/gogpu/wgpu
>
> gogpu/naga — Pure Go shader compiler
> WGSL to SPIR-V compiler. Supports vertex, fragment, and compute shaders
> with atomics and barriers. ~17K lines.
> https://github.com/gogpu/naga
>
> gogpu/gg — Enterprise-grade 2D graphics
> Spiritual successor to fogleman/gg with GPU acceleration. Canvas API, text
> rendering, images, clipping, 29 blend modes, scene graph, parallel
> rendering. ~25K lines.
> https://github.com/gogpu/gg
>
> gogpu/gogpu — High-level graphics framework
> Simple API for GPU applications. Dual backend: use wgpu-native FFI for
> production or Pure Go for zero-dependency builds.
> https://github.com/gogpu/gogpu
>
> gogpu/ui — GUI widget toolkit (planned)
> The end goal — a complete widget toolkit for desktop applications.
> Currently in early planning stage.
> https://github.com/gogpu/ui
>
>
> THE VISION
> ----------
>
> We want Go to have first-class graphics support — from low-level GPU
> access to high-level GUI widgets. The stack:
>
> Your App / GUI
> ↓
> gogpu/ui (widget toolkit, planned)
> ↓
> gogpu/gg (2D graphics)
> ↓
> gogpu/gogpu (GPU framework)
> ↓
> gogpu/wgpu (WebGPU) + gogpu/naga (shaders)
> ↓
> Vulkan / Metal / DX12 / OpenGL
>
>
> USE CASES
> ---------
>
> - Game development (2D games, game engines)
> - Data visualization dashboards
> - CAD/vector graphics applications
> - Server-side image generation (PDF, charts, thumbnails)
> - CI/CD testing without GPU hardware
> - Desktop applications with custom UI
> - Embedded systems with minimal dependencies
>
>
> CURRENT STATUS
> --------------
>
> Total: ~154K lines of pure Go code across the ecosystem.
>
> All libraries are functional and tested. The software rasterizer just got
> a major update with full triangle rendering, depth/stencil buffers, and
> parallel processing.
>
> We're now working toward a GUI widget toolkit (gogpu/ui).
>
>
> PUBLICATIONS
> ------------
>
> Dev.to articles about the journey:
> - GoGPU Announcement:
> https://dev.to/kolkov/gogpu-a-pure-go-graphics-library-for-gpu-programming-2j5d
> - 100K Lines in Two Weeks:
> https://dev.to/kolkov/gogpu-from-idea-to-100k-lines-in-two-weeks-building-gos-gpu-ecosystem-3b2
> - Naga Shader Compiler:
> https://dev.to/kolkov/building-a-shader-compiler-in-pure-go-naga-reaches-v040-39ol
> - gg 2D Graphics:
> https://dev.to/kolkov/pure-go-2d-graphics-library-with-gpu-acceleration-introducing-gogpugg-538h
>
>
> INTERESTED?
> -----------
>
> We'd love to hear your thoughts:
> - Is this something you'd use?
> - What features would be most valuable for your projects?
> - Want to contribute?
>
> GitHub: https://github.com/gogpu
>
> Thanks for reading!
>
> --
> Andrey Kolkov
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/golang-nuts/88dd7960-97c1-47f2-bead-ba4694568d94n%40googlegroups.com.