Awesome Open Source
Awesome Open Source


Ink is a framework for creative 2D graphics in Go, based on OpenGL. Visit for more.

Example: a simple triangle


go get

(Building Ink is a little tricky, because it depends on GLFW. You might need to install these packages:


Write example.go:

package main

import (
	. ""
	. ""

func Ink(doc gfx.Doc) {
	t := Triangle{
		XY{0.2, 0.2},
		XY{0.8, 0.2},
		XY{0.5, 0.8},
	s := gfx.Fill{Shape: t}.Shader()
	s.Set("a_color", []RGBA{
		Red, Green, Blue,


ink example.go

Ink opens a window and renders your triangle:

Triangle example

There are more examples in the sketches directory.

Implementation Notes

  • Ink is based on OpenGL only, although other backends are desired. There is an experimental WebGL branch.
  • Ink is focused on 2D graphics, although 3D is desired some day.
  • Most numbers are float32, because OpenGL APIs are mostly based on float32s.
    • This is also why I haven't used the Go stdlib image/color. I admit this feels messy.
  • Angles are in radians, unless otherwise noted.

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
go (14,453
golang (3,683
opengl (456
creative-coding (63
generative-art (60
2d-graphics (19

Find Open Source By Browsing 7,000 Topics Across 59 Categories