art3de/pkg/engine/renderer/renderer.go

46 lines
855 B
Go

package renderer
import (
"log"
"github.com/go-gl/gl/v4.1-core/gl"
)
type Renderer struct {
clearColor [4]float32
}
func NewRenderer() *Renderer {
return &Renderer{
clearColor: [4]float32{0.1, 0.1, 0.1, 0.1},
}
}
func (r *Renderer) Init() error {
if err := gl.Init(); err != nil {
return err
}
gl.Enable(gl.DEPTH_TEST)
gl.Enable(gl.BLEND)
gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)
version := gl.GoStr(gl.GetString(gl.VERSION))
log.Println("OpenGL version:", version)
return nil
}
func (r *Renderer) Clear() {
gl.ClearColor(r.clearColor[0], r.clearColor[1], r.clearColor[2], r.clearColor[3])
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
}
func (r *Renderer) SetClearColor(rgba [4]float32) {
r.clearColor = rgba
}
func (r *Renderer) SetViewport(x, y, width, height int32) {
gl.Viewport(x, y, width, height)
}