Benchè non sia necessario l'utilizzo di un coprocessore matematico, avendo realizzato questo demo in fretta e furia ( in circa 20 ore ! ) non ne posso garantire il funzionamento su tutti i modelli di Amiga.
Demo testato su : A1200 + blizzard 1220 + 68882 + 4 Mb fast ram. A4000 / EC040 / 14 Mb ram
La routine di 3D e' una mia vecchia routine, non piu' usata da molto tempo.
Il suo scopo e' quello di prelevare le coordinate X,Y,Z dei punti da una tabella e ruotarli secondo i valori di Xangle, Yangle e Zangle.
I rusultati vengono poi rielaborati per essere zoommati.
La ruotine e' indubbiamente lenta, poichè vengono ancora usate molte moltiplicazioni e divisioni, e sono presenti troppi accessi alla memoria: i dati sono prima salvati in ROTATE, ripresi e risalvati in ZOOMMA, mentre una sola routine che calcolasse tutto sarebbe molto piu' veloce.
Come se cio' non bastasse, la rotazione viene calcolata su 3 assi, sebbene il programma ne richieda solo uno.
La ruotine di Texture Mapping e' molto semplice da capire, comunque verra' trattata nei prossimi articoli, con esempi piu' chiari ed una spiegazione dettagliata su come ruotare e scalare disegni.
In questi giorni sto' sviluppando un gioco 3D di automobili, basato su una routine molto simile a quella usata nel sorgente; l'unica differenza consiste nel fatto che la ruotine e' ottimizzata al massimo delle sue potenzialita': riesce a calcolare la rotazione sugli assi 160x128 punti a 50 frames/secondo su un A1200 base con la sola aggiunta di fast ram, lasciando parecchio tempo macchina libero per altre parti del gioco.
Tutto viene calcolato in modo Chunky-Pixel e successivamente visualizzato tramite l'uso del Copper.
Il Copper non fa altro che visualizzare un disegno a 256 colori e variare la palette ogni tre linee verticali; la risoluzione del Copper dipende dal disegno utilizzato (nel mio caso 3 pixels orizzontali) e dalla frequenza con cui la palette viene modificata (nel mio caso ogni 3 linee verticali): quindi si avra' una risoluzione di 3x3 pixels.
Con tale risoluzione la schermata è piuttosto pixellosa, ma indubbiamente piu' veloce che con qualunque altro tipo di conversione.
Sebbene sia possibile usare il Copper per avere risoluzioni 1x1,1x2,1x3,2x1, 2x2,2x3 e altre ancora, ho voluto usarlo in modalita' 3x3 per avere una scheramta in full-screen ovvero in 318x228. Con altre risoluzioni non sarebbe stato possibile fare altrettanto per ovvi limiti di hardware.
Scritto da: Alfredo Ornaghi e-mail: fsoft@intercom.it ITALY tel: