WIP: Speed up rendering by using a spritesheet
This commit is contained in:
@@ -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]
|
||||
}
|
||||
|
Reference in New Issue
Block a user