Re-worked memory management of blocks loaded from redis client to avoid

unnecessary copying them around.
This commit is contained in:
Sascha L. Teichmann
2017-03-03 23:00:29 +01:00
parent 4a3fa1f568
commit 91959685f5
4 changed files with 51 additions and 48 deletions

View File

@ -105,14 +105,21 @@ func main() {
renderer := common.NewRenderer(width, height, transparent)
renderer.SetPos(q1x, q1z)
yOrder := common.NewYOrder(renderer, 512)
renderFn := func(block *common.Block) error {
return renderer.RenderBlock(block, colors)
}
yOrder := common.NewYOrder(renderFn, 512)
numBlocks := 0
drawBlock := func(block *common.Block) {
if err := yOrder.RenderBlock(block, colors); err != nil {
drawBlock := func(block *common.Block) *common.Block {
block, err := yOrder.RenderBlock(block)
if err != nil {
log.Printf("WARN: rendering block failed: %s\n", err)
}
numBlocks++
return block
}
c1 := common.Coord{X: q1x, Z: q1z}
@ -126,7 +133,7 @@ func main() {
if _, err = client.QueryCuboid(cuboid, drawBlock); err != nil {
log.Fatalf("query failed: %s", err)
}
if err = yOrder.Drain(colors); err != nil {
if err = yOrder.Drain(); err != nil {
log.Printf("WARN: rendering block failed: %s\n", err)
}
if renderer.IsFilled() {