mirror of
https://github.com/Kugelschieber/go-game.git
synced 2026-01-18 06:40:28 +00:00
Small improvement to sprite renderer, added demo for simple sprite rendering.
This commit is contained in:
BIN
demo/sprite/assets/gopher.png
Normal file
BIN
demo/sprite/assets/gopher.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 40 KiB |
41
demo/sprite/sprite.go
Normal file
41
demo/sprite/sprite.go
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/DeKugelschieber/go-game"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
gopher_path = "src/github.com/DeKugelschieber/go-game/demo/sprite/assets/gopher.png"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Game struct{}
|
||||||
|
|
||||||
|
func (g *Game) Setup() {
|
||||||
|
res, err := goga.LoadRes(gopher_path)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
tex, ok := res.(*goga.Tex)
|
||||||
|
|
||||||
|
if !ok {
|
||||||
|
panic("Resource is not a texture")
|
||||||
|
}
|
||||||
|
|
||||||
|
sprite := goga.NewSprite(tex)
|
||||||
|
renderer := goga.GetSystemByName("spriteRenderer")
|
||||||
|
renderer.Add(sprite)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Game) Update(delta float64) {
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
game := Game{}
|
||||||
|
options := goga.RunOptions{ClearColor: goga.Vec4{1, 1, 1, 0},
|
||||||
|
Resizable: true,
|
||||||
|
SetViewportOnResize: true,
|
||||||
|
ExitOnClose: true}
|
||||||
|
goga.Run(&game, &options)
|
||||||
|
}
|
||||||
@@ -149,6 +149,7 @@ func (s *SpriteRenderer) Update(delta float64) {
|
|||||||
s.Shader.SendMat3(Default_shader_2D_ortho, *MultMat3(s.Camera.CalcOrtho(), s.CalcModel()))
|
s.Shader.SendMat3(Default_shader_2D_ortho, *MultMat3(s.Camera.CalcOrtho(), s.CalcModel()))
|
||||||
s.Shader.SendUniform1i(Default_shader_2D_tex, 0)
|
s.Shader.SendUniform1i(Default_shader_2D_tex, 0)
|
||||||
s.vao.Bind()
|
s.vao.Bind()
|
||||||
|
var tid uint32
|
||||||
|
|
||||||
for i := range s.sprites {
|
for i := range s.sprites {
|
||||||
if !s.sprites[i].Visible {
|
if !s.sprites[i].Visible {
|
||||||
@@ -156,7 +157,11 @@ func (s *SpriteRenderer) Update(delta float64) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
s.Shader.SendMat3(Default_shader_2D_model, *s.sprites[i].CalcModel())
|
s.Shader.SendMat3(Default_shader_2D_model, *s.sprites[i].CalcModel())
|
||||||
|
|
||||||
|
if tid != s.sprites[i].Tex.GetId() {
|
||||||
|
tid = s.sprites[i].Tex.GetId()
|
||||||
s.sprites[i].Tex.Bind()
|
s.sprites[i].Tex.Bind()
|
||||||
|
}
|
||||||
|
|
||||||
gl.DrawElements(gl.TRIANGLES, 6, gl.UNSIGNED_INT, nil)
|
gl.DrawElements(gl.TRIANGLES, 6, gl.UNSIGNED_INT, nil)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user