1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
// vim: shiftwidth=4 tabstop=4 noexpandtab
package main
import (
"log"
"github.com/go-gl/glfw/v3.3/glfw"
"github.com/go-gl/mathgl/mgl32"
)
const (
WINDOW_WIDTH = 500
WINDOW_HEIGHT = 500
WINDOW_TITLE = "stlscope"
)
type App struct {
window *glfw.Window
graphics *Graphics
}
func newApp() App {
var app App = App{}
var err error
log.Println("GLFW init")
if err := glfw.Init(); err != nil {
panic(err)
}
glfw.WindowHint(glfw.Resizable, glfw.False)
glfw.WindowHint(glfw.ContextVersionMajor, 4)
glfw.WindowHint(glfw.ContextVersionMinor, 6)
glfw.WindowHint(glfw.OpenGLProfile, glfw.OpenGLCoreProfile)
glfw.WindowHint(glfw.OpenGLForwardCompatible, glfw.True)
glfw.WindowHint(glfw.Samples, 16) // anti-aliasing
log.Println("Creating Window")
app.window, err = glfw.CreateWindow(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_TITLE, nil, nil)
if err != nil {
panic(err)
}
app.window.MakeContextCurrent()
return app
}
func (application *App) handle() {
glfw.PollEvents()
application.window.SwapBuffers()
trafo := mgl32.HomogRotate3D(float32(glfw.GetTime()) * 3, mgl32.Vec3{0, 1, 1})
var scale float32 = 0.01
trafo = trafo.Mul4(mgl32.Scale3D(scale, scale, scale))
application.graphics.setTrafo(trafo)
}
func (application App) terminate() {
glfw.Terminate()
}
|