Avalonia Code OnlyItaliano

Volumes › Volume 5

The chapter that opens the book, as it is printed: how the volume is made, who it is for, what you need.

This page is available in Italian only for now.

Prima di cominciare

Prefazione

I volumi 3 e 4 hanno disegnato su un piano: forme, curve, testo, immagini, con Avalonia e con Skia. Questo libro aggiunge la terza dimensione. Un oggetto 3D non si disegna: si descrive con dei numeri, vertici e triangoli, e un programma lo trasforma, lo illumina e lo proietta sullo schermo, sessanta volte al secondo.

Il libro lo fa in due tempi. La prima parte non usa nessuna libreria: vettori e matrici con System.Numerics, le trasformazioni, la telecamera, le mesh, la luce, e alla fine un rasterizzatore scritto a mano in C#, che disegna i triangoli pixel per pixel su una bitmap. È lento, e lo si misura: è il modo più corto per capire che cosa fa la scheda video. La seconda parte passa a OpenGL, la libreria grafica che gira su Windows, Linux e macOS, aperta dentro un controllo di Avalonia: buffer, shader, texture, luci, ombre, framebuffer, instancing, compute shader. La terza parte costruisce le cose che servono in un'applicazione vera: la telecamera che gira col mouse, i modelli glTF, il clic su un oggetto, le etichette, le misure dei tempi della scheda video. Il libro finisce con quattro progetti: un visualizzatore di modelli, una superficie di misure in tempo reale, un grafico 3D scientifico e una nuvola di milioni di punti.

Tutto è ancora C#, senza XAML, e senza librerie a pagamento: Avalonia (la parte gratuita), Silk.NET per le chiamate a OpenGL, SkiaSharp per le texture e il testo, SharpGLTF per i modelli, tutte con licenza MIT.

La collana ha dieci volumi:

  1. Il linguaggio C#: tipi, oggetti, generici, eccezioni, file, thread, Task e async.
  2. Interfacce desktop: Avalonia in codice, i controlli, i temi, le architetture e i thread dell'interfaccia.
  3. Grafica 2D: il disegno e le animazioni con Avalonia.
  4. Grafica 2D avanzata: Skia, Direct2D, le immagini, i progetti.
  5. Grafica 3D: il 3D da zero con OpenGL. Questo libro.
  6. Grafica 3D avanzata: Vulkan e Direct3D.
  7. Audio.
  8. Video.
  9. Dispositivi, dati e rete.
  10. Sistema, distribuzione e qualità.

I volumi 5 e 6 erano un libro solo, diviso per libreria perché superava le 480 pagine: questo insegna il 3D con OpenGL, il volume 6 scende in Vulkan e Direct3D e confronta le tre strade. Ogni capitolo porta il numero del volume: V.4 è il quarto capitolo di questo libro, §V.4.2 il secondo paragrafo di quel capitolo. Un rimando con il numero I, II, III o IV, come «(capitolo IV.15)», indica il volume 1, 2, 3 o 4.

Che cosa serve dei volumi precedenti

Il libro dà per noto il C# del volume 1 e le basi di Avalonia del volume 2. Del disegno 2D servono poche cose, e il capitolo che le usa rimanda a dove sono spiegate:

ArgomentoDove
classi, interfacce, eventi, generici, unsafe e puntatoricapitoli I.6–I.10
thread, Task, awaitcapitoli I.15–I.18
il progetto Avalonia, la finestra, RAVALcapitoli II.2–II.5
il thread della finestra, il Dispatcher, i timercapitoli II.37 e II.39
come disegna Avalonia: il thread del disegno, il compositorecapitolo III.1
Render, penne, geometrie, trasformazionicapitoli III.2–III.5
il passo fisso delle animazionicapitolo III.21
Skia: bitmap, testo, pixelcapitoli IV.1–IV.4 e IV.21
la scheda video dentro Avalonia: la texture condivisacapitolo IV.15

La matematica non va oltre le superiori: vettori, seni e coseni. Quello che serve di più, le matrici, si spiega da capo nei capitoli V.2–V.4.

Come è fatto il libro

ParteCapitoliChe cosa
Prima · Il 3D senza librerieV.1–V.7vettori, matrici, trasformazioni, telecamera, mesh, luce, un rasterizzatore a mano
Seconda · OpenGLV.8–V.20il controllo OpenGL di Avalonia, buffer, GLSL, texture, luci, ombre, instancing, compute
Terza · Scene vereV.21–V.26telecamera orbitale, modelli glTF, animazioni, picking, testo nel 3D, misure
ProgettiV.27–V.30visualizzatore di modelli, superficie di misure, grafico 3D, nuvola di punti
AppendiciA–Cgli inciampi, il riferimento rapido, il glossario

Ogni capitolo comincia con Cosa imparerai e finisce con tre riquadri: Errori comuni, gli sbagli che si fanno davvero, con il rimedio; Da ricordare, il capitolo in poche righe; Esercizi, da fare con l'editor aperto.

I percorsi di lettura

La scheda video del libro

Gli esempi chiedono OpenGL 3.3 con il profilo «core», che hanno tutte le schede video degli ultimi quindici anni, anche quelle integrate nel processore; solo i compute shader (capitolo V.19) chiedono OpenGL 4.3. Su Windows il libro apre OpenGL con il driver della scheda (WGL), e non con ANGLE, il traduttore verso Direct3D che Avalonia usa da sé: lo stesso OpenGL di Linux e di macOS, con la profondità a 24 bit e i compute shader. Il capitolo V.8 spiega la differenza, il V.20 la misura sui tre sistemi.

Le misure del libro sono prese su Windows 10 con una NVIDIA GeForce GTX 1080; il testo dice quando un numero cambia molto da una scheda all'altra.

Le regole della casa

Le stesse dei volumi precedenti:

Gli strumenti e il codice degli esempi

Servono l'SDK di .NET 10, un editor per C# (il libro usa Visual Studio Code, capitolo I.2), Avalonia 12.1.4 e RAVAL 2.0.0, come nei volumi precedenti; Silk.NET.OpenGL 2.22 si aggiunge dal capitolo V.9, SharpGLTF nel V.22. Per guardare dentro un fotogramma della scheda video serve RenderDoc (capitolo V.26), gratuito.

Il codice si scarica gratuitamente dal sito del libro, https://raval.aratoingegneria.it (capitolo II.2). RAVAL e gli esempi hanno la licenza MIT. Ogni programma degli esempi è stato compilato senza un avviso, e ogni figura è stata disegnata dal programma vero.

Convenzioni tipografiche

Back to volume 5