main: backport gl02 goodies
This commit is contained in:
parent
92b0ace7a2
commit
d376a0fd39
7
cmd/main.cfg.json
Normal file
7
cmd/main.cfg.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"WindowWidth": 1600,
|
||||||
|
"WindowHeight": 900,
|
||||||
|
|
||||||
|
"FramerateLimit": 60
|
||||||
|
}
|
||||||
|
|
30
cmd/main.go
30
cmd/main.go
@ -13,34 +13,48 @@ import (
|
|||||||
"github.com/go-gl/glfw/v3.3/glfw"
|
"github.com/go-gl/glfw/v3.3/glfw"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
var (
|
||||||
//windowWidth = 852
|
frameTick *time.Ticker
|
||||||
//windowHeight = 480
|
|
||||||
windowWidth = 1600
|
|
||||||
windowHeight = 900
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
runtime.LockOSThread()
|
runtime.LockOSThread()
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
|
err := gio.LoadConfig()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
if err := glfw.Init(); err != nil {
|
if err := glfw.Init(); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
defer glfw.Terminate()
|
defer glfw.Terminate()
|
||||||
|
|
||||||
|
// framerate limit ticker
|
||||||
|
if gio.MainConfig.FramerateLimit > 0 {
|
||||||
|
frameTick = time.NewTicker(time.Second / time.Duration(gio.MainConfig.FramerateLimit))
|
||||||
|
}
|
||||||
|
|
||||||
glfw.WindowHint(glfw.Resizable, 1)
|
glfw.WindowHint(glfw.Resizable, 1)
|
||||||
glfw.WindowHint(glfw.ContextVersionMajor, 3)
|
glfw.WindowHint(glfw.ContextVersionMajor, 3)
|
||||||
glfw.WindowHint(glfw.ContextVersionMinor, 3)
|
glfw.WindowHint(glfw.ContextVersionMinor, 3)
|
||||||
glfw.WindowHint(glfw.OpenGLProfile, glfw.OpenGLCoreProfile)
|
glfw.WindowHint(glfw.OpenGLProfile, glfw.OpenGLCoreProfile)
|
||||||
glfw.WindowHint(glfw.OpenGLForwardCompatible, 1)
|
glfw.WindowHint(glfw.OpenGLForwardCompatible, 1)
|
||||||
win, err := glfw.CreateWindow(windowWidth, windowHeight, "Gl01", nil, nil)
|
win, err := glfw.CreateWindow(gio.MainConfig.WindowWidth, gio.MainConfig.WindowHeight, "Gl01", nil, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
win.MakeContextCurrent()
|
win.MakeContextCurrent()
|
||||||
|
// vsync
|
||||||
|
if gio.MainConfig.FramerateLimit == 0 {
|
||||||
glfw.SwapInterval(1)
|
glfw.SwapInterval(1)
|
||||||
|
} else {
|
||||||
|
glfw.SwapInterval(0)
|
||||||
|
}
|
||||||
|
|
||||||
err = gl.Init()
|
err = gl.Init()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -83,5 +97,9 @@ func main() {
|
|||||||
} else {
|
} else {
|
||||||
fpsCounter++
|
fpsCounter++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if gio.MainConfig.FramerateLimit > 0 {
|
||||||
|
<-frameTick.C
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
20
internal/io/config.go
Normal file
20
internal/io/config.go
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package io
|
||||||
|
|
||||||
|
import "edgaru089.ml/go/gl01/internal/util"
|
||||||
|
|
||||||
|
var (
|
||||||
|
MainConfig struct {
|
||||||
|
WindowWidth, WindowHeight int
|
||||||
|
FramerateLimit int // 0: vsync, -1: unlimited
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func LoadConfig() (err error) {
|
||||||
|
|
||||||
|
err = util.LoadJSON("main.cfg.json", &MainConfig)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
40
internal/util/json.go
Normal file
40
internal/util/json.go
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func LoadJSON(filename string, object interface{}) (err error) {
|
||||||
|
|
||||||
|
file, err := os.Open(filename)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
dec := json.NewDecoder(file)
|
||||||
|
err = dec.Decode(object)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
file.Close()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SaveJSON(filename string, object interface{}) (err error) {
|
||||||
|
|
||||||
|
file, err := os.Create(filename)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
enc := json.NewEncoder(file)
|
||||||
|
err = enc.Encode(object)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
file.Close()
|
||||||
|
return
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user