55 lines
1.0 KiB
Go
55 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"runtime"
|
|
|
|
"github.com/go-gl/gl/v3.3-core/gl"
|
|
"github.com/go-gl/glfw/v3.3/glfw"
|
|
)
|
|
|
|
const (
|
|
width = 800
|
|
height = 600
|
|
title = "Go OpenGL Example"
|
|
)
|
|
|
|
func init() {
|
|
runtime.LockOSThread()
|
|
}
|
|
|
|
func main() {
|
|
err := glfw.Init()
|
|
if err != nil {
|
|
log.Fatalln("Failed to initialize GLFW:", err)
|
|
}
|
|
defer glfw.Terminate()
|
|
|
|
glfw.WindowHint(glfw.ContextVersionMajor, 3)
|
|
glfw.WindowHint(glfw.ContextVersionMinor, 3)
|
|
glfw.WindowHint(glfw.OpenGLProfile, glfw.OpenGLCoreProfile)
|
|
glfw.WindowHint(glfw.OpenGLForwardCompatible, glfw.True)
|
|
|
|
window, err := glfw.CreateWindow(width, height, title, nil, nil)
|
|
if err != nil {
|
|
log.Fatalln("Failed to create window:", err)
|
|
}
|
|
|
|
window.MakeContextCurrent()
|
|
glfw.SwapInterval(1)
|
|
|
|
if err := gl.Init(); err != nil {
|
|
log.Fatalln("Failed to initialize OpenGL:", err)
|
|
}
|
|
|
|
// gl.ClearColor(0.1, 0.5, 0.8, 0.5) // blue
|
|
gl.ClearColor(0.1, 1, 0.1, 0.5) // neon
|
|
|
|
for !window.ShouldClose() {
|
|
gl.Clear(gl.COLOR_BUFFER_BIT)
|
|
|
|
window.SwapBuffers()
|
|
glfw.PollEvents()
|
|
}
|
|
}
|