API Canvas do JavaScript no Golang e como usar
Olá pessoal, tudo bem? Eu sou Henrique e vou apresentar-lhes o package https://github.com/tfriedel6/canvas
Features
Esse package é baseado em OpenGL e você pode escolher entre usar o SDL ou o GLFW para fazer as chamadas OpenGL para você
Para mudar entre eles, você poderá usar o exemplo abaixo como referência para isso.
Para usar o SDL, use o pacote github.com/tfriedel6/canvas/sdlcanvas
Para usar o GLFW, use o pacote github.com/tfriedel6/canvas/glfwcanvas
E não se preucupe, as funções dos pacotes são as mesmas. Use o exemplo para referência.
Exemplo
Usarei o exemplo da própia página do GitHub do tfriedel6 pois estou no celular e não tenho como testar algum exemplo próprio.
Usando este código:
package main
import (
"math"
"github.com/tfriedel6/canvas/sdlcanvas"
)
func main() {
wnd, cv, err := sdlcanvas.CreateWindow(1280, 720, "Hello")
if err != nil {
panic(err)
}
defer wnd.Destroy()
wnd.MainLoop(func() {
w, h := float64(cv.Width()), float64(cv.Height())
cv.SetFillStyle("#000")
cv.FillRect(0, 0, w, h)
for r := 0.0; r < math.Pi*2; r += math.Pi * 0.1 {
cv.SetFillStyle(int(r*10), int(r*20), int(r*40))
cv.BeginPath()
cv.MoveTo(w*0.5, h*0.5)
cv.Arc(w*0.5, h*0.5, math.Min(w, h)*0.4, r, r+0.1*math.Pi, false)
cv.ClosePath()
cv.Fill()
}
cv.SetStrokeStyle("#FFF")
cv.SetLineWidth(10)
cv.BeginPath()
cv.Arc(w*0.5, h*0.5, math.Min(w, h)*0.4, 0, math.Pi*2, false)
cv.Stroke()
})
}
Resulta em uma janela com isto:
Seja muito bem vindo Henrique! Muito obrigado pelo post e eu sou apaixonado por "Canvas", no sentido de colocar um "game loop" e ficar desenhando coisas. Um canvas que fiz e que gostei muito foi esse:
https://filipedeschamps.github.io/doom-fire-algorithm/playground/falling-stars/
Em paralelo, duas sugestões para o seu post:
Syntax highlight
Sugiro definir a linguagem no início do bloco de código, por exemplo:
```go
Fazendo o resultado ficar assim:
package main
import (
"math"
github.com/tfriedel6/canvas/sdlcanvas"
)
URLs
Colocar a URL completa (com o https://
0 para que o editor insira um link automaticamente 🤝