46 lines
855 B
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)
|
|
}
|