WIP: Speed up rendering by using a spritesheet

This commit is contained in:
2018-10-12 23:02:24 +01:00
parent aa093faabc
commit 1fa61c72c2
4 changed files with 152 additions and 32 deletions

View File

@@ -25,6 +25,7 @@ var (
type env struct {
set *sets.MapSet
objects map[string]*conv.Object
batch *pixel.Batch
}
type state struct {
@@ -53,19 +54,22 @@ func main() {
log.Fatalf("Couldn't load set file %s: %v", *setFile, err)
}
objects := make(map[string]*conv.Object)
rawObjs := []*data.Object{}
for _, name := range mapSet.Palette {
objFile := filepath.Join(*gamePath, "Obj", name+".obj")
obj, err := data.LoadObject(objFile)
if err != nil {
log.Fatalf("Failed to load %s: %v", name, err)
}
obj.Name = name
objects[name] = conv.ConvertObject(obj, name)
rawObjs = append(rawObjs, obj)
}
env := &env{objects: objects, set: mapSet}
objects, spritesheet := conv.ConvertObjects(rawObjs)
batch := pixel.NewBatch(&pixel.TrianglesData{}, spritesheet)
env := &env{objects: objects, set: mapSet, batch: batch}
// The main thread now belongs to pixelgl
pixelgl.Run(env.run)
@@ -129,7 +133,12 @@ func (s *state) present(pWin *pixelgl.Window) {
pWin.SetMatrix(s.cam)
pWin.Clear(colornames.Black)
pixel.NewSprite(sprite.Pic, sprite.Pic.Bounds()).Draw(pWin, pixel.IM.Moved(center))
s.env.batch.Clear()
sprite.Spr.Draw(s.env.batch, pixel.IM.Moved(center))
//pixel.NewSprite(sprite.Pic, sprite.Pic.Bounds()).Draw(pWin, pixel.IM.Moved(center))
s.env.batch.Draw(pWin)
pWin.Update()
}
func (s *state) handleKeys(pWin *pixelgl.Window) {
@@ -165,6 +174,6 @@ func (s *state) handleKeys(pWin *pixelgl.Window) {
func (s *state) curObject() *conv.Object {
name := s.env.set.Palette[s.objIdx]
log.Printf("name: %v, objects: %#v", name, s.env.objects)
//log.Printf("name: %v, objects: %#v", name, s.env.objects)
return s.env.objects[name]
}