andlabs / andlabs/libui

How to constrain area redrawing to clip region?

Abierto
#540 1 comentario 1 reacción 0 asignados Ver en GitHub
Lenguaje dominante
C
Estrellas
10.9k
Forks
612
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Hi,

I built this game, [Glimmer Tetris](https://github.com/AndyObtiva/glimmer-dsl-libui#tetris)

It runs fast with a basic 2D look (each block is a path).

![glimmer-dsl-libui-mac-tetris](https://user-images.githubusercontent.com/23052/140208138-124d1376-bfea-461d-9684-79e92f756db5.png)

When I attempt to add a simulated bevel-block 3D look via 4 extra polygons per block where each polygon is a figure of multiple line calls done under a single path (similar to the [Glimmer Tetris built with SWT](https://github.com/AndyObtiva/glimmer_tetris))...

![Screen Shot 2021-11-03 at 6 35 17 PM](https://user-images.githubusercontent.com/23052/140210524-720e179c-8487-4138-99e5-ea12350b2c20.png)

Area redrawing slows down to a crawl!

I ensured that only a single redraw is happening per movement of the Tetris tetromino blocks.

My question is: I could probably optimize performance by asking the area to redraw only the blocks that changed instead of the entire playfield.

How do I do that with libui? Is that option available? The only thing I saw is queueRedrawAll, which redraws everything.

Is that what save and restore are all about? Initial saving... restoring the whole area, making a small change, and then saving again? Does that improve performance?

If clipped redrawing is not available, this would be a great performance optimization feature to have I think.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.