package main

import (
	"fmt"
	"os"

	"git.tek.govt.hu/dowerx/opengl-deferred/types/shader"
	"github.com/go-gl/gl/v4.6-core/gl"
	"github.com/go-gl/glfw/v3.3/glfw"
)

const (
	WIDTH  = 640
	HEIGHT = 480
	TITLE  = "opengl-deferred"
)

func main() {
	// init glfw
	if err := glfw.Init(); err != nil {
		panic(err)
	}
	defer glfw.Terminate()

	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)

	window, err := glfw.CreateWindow(WIDTH, HEIGHT, TITLE, nil, nil)
	if err != nil {
		panic(err)
	}
	window.MakeContextCurrent()

	// init glow
	if err := gl.Init(); err != nil {
		panic(err)
	}

	fmt.Println("OpenGL version:", gl.GoStr(gl.GetString(gl.VERSION)))

	// load assets
	// shader
	vertexSource, err := os.ReadFile("assets/shader/deferred/deferred.vs")
	if err != nil {
		panic(err)
	}
	fragmentSource, err := os.ReadFile("assets/shader/deferred/deferred.fs")
	if err != nil {
		panic(err)
	}

	deferredShader, err := shader.New(string(vertexSource), string(fragmentSource))
	if err != nil {
		panic(err)
	}
	defer deferredShader.Delete()

	deferredShader.Use()
}
