00
:
00
:
00
:
00
Corso SEO AI - Usa SEOEMAIL al checkout per il 30% di sconto

Grafica 2D

SpriteBatch

In OpenGL, inviare ogni singola immagine alla GPU separatamente è lentissimo. SpriteBatch risolve questo problema: accumula (bathes) tutte le immagini che vuoi disegnare e le invia alla GPU in un colpo solo quando chiami batch.end().

Regola d’oro: Chiama batch.begin() e batch.end() il meno possibile (idealmente una volta per frame).

```java batch.begin(); // Disegna tutto qui dentro batch.draw(texture1, x, y); batch.draw(texture2, x, y); font.draw(batch, “Hello”, 100, 100); batch.end(); ```

Textures & TextureRegions

  • Texture: Un’immagine caricata in VRAM (Video RAM). Le dimensioni dovrebbero essere potenze di due (POT) per compatibilità massima (es. 256x256, 1024x1024), ma OpenGL ES 2.0 supporta anche NPOT.
  • TextureRegion: Una porzione rettangolare di una Texture. Utile per gli Sprite Sheets (Texture Atlas).

```java Texture sheet = new Texture(“spritesheet.png”); // Prendi una regione 32x32 iniziando da (0,0) TextureRegion frame1 = new TextureRegion(sheet, 0, 0, 32, 32); ```

Camera & Viewport

Non disegnare usando coordinate fisse dello schermo (pixel)! Usa una Camera.

```java OrthographicCamera camera = new OrthographicCamera(); camera.setToOrtho(false, 800, 480); // Y-up coordinate system ```

Nel render(): ```java camera.update(); batch.setProjectionMatrix(camera.combined); # Di’ al batch come proiettare il mondo 3D sullo schermo 2D

batch.begin(); … batch.end(); ```

In combinazione con una Viewport (es. FitViewport), questo gestisce automaticamente schermi di dimensioni diverse mantenendo l’aspect ratio.