Added depth test function and 3D demo.

This commit is contained in:
Marvin Blum
2016-05-08 20:41:49 +02:00
parent 139e668233
commit 12433458cc
2 changed files with 75 additions and 0 deletions

66
demo/model/model.go Normal file
View File

@@ -0,0 +1,66 @@
package main
import (
"github.com/DeKugelschieber/go-game"
)
const (
assets_dir = "src/github.com/DeKugelschieber/go-game/demo/model/assets"
)
type Game struct {
model *goga.Model
}
func (g *Game) Setup() {
// load texture and ply mesh
err := goga.LoadResFromFolder(assets_dir)
if err != nil {
panic(err)
}
// create model
tex, err := goga.GetTex("cube.png")
if err != nil {
panic(err)
}
ply, err := goga.GetPly("cube.ply")
if err != nil {
panic(err)
}
mesh := goga.NewMesh(ply.IndexBuffer, ply.VertexBuffer, ply.TexCoordBuffer)
model := goga.NewModel(mesh, tex)
renderer, ok := goga.GetSystemByName("modelRenderer").(*goga.ModelRenderer)
if !ok {
panic("Could not find renderer")
}
renderer.Prepare(model)
renderer.Add(model.Actor, model.Pos3D, model.Tex, model.Mesh)
g.model = model
// enable depth test and buffer
goga.EnableDepthTest(true)
goga.ClearDepthBuffer(true)
}
func (g *Game) Update(delta float64) {
// update rotation on each frame around upper axis
g.model.Rot.Z += delta * 45
}
func main() {
game := Game{}
options := goga.RunOptions{ClearColor: goga.Vec4{1, 1, 1, 0},
Resizable: true,
SetViewportOnResize: true,
ExitOnClose: true}
goga.Run(&game, &options)
}

View File

@@ -392,6 +392,15 @@ func EnableAlphaBlending(enable bool) {
}
}
// Enables/Disables depth test.
func EnableDepthTest(enable bool) {
if enable {
gl.Enable(gl.DEPTH_TEST)
} else {
gl.Disable(gl.DEPTH_TEST)
}
}
// Sets GL viewport and updates default resources and systems.
func SetViewport(x, y, width, height int32) {
viewportWidth = int(width)