mirror of
https://github.com/Kugelschieber/go-game.git
synced 2026-01-18 06:40:28 +00:00
Added depth test function and 3D demo.
This commit is contained in:
66
demo/model/model.go
Normal file
66
demo/model/model.go
Normal 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)
|
||||||
|
}
|
||||||
9
game.go
9
game.go
@@ -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.
|
// Sets GL viewport and updates default resources and systems.
|
||||||
func SetViewport(x, y, width, height int32) {
|
func SetViewport(x, y, width, height int32) {
|
||||||
viewportWidth = int(width)
|
viewportWidth = int(width)
|
||||||
|
|||||||
Reference in New Issue
Block a user