Guida di David Joffe alla
Programmazione di Giochi con le DirectX
Capitolo 1: Introduzione alle DirectX
1.1 Poche informazioni veloci su questi articoli
Questo documento e tutti i files e il codice dati insieme
ad esso sono forniti "così com'è" e senza alcun tipo
di garanzia, nemmeno la garanzia implicita td'uso per qualsiasi scopo particolare.
Io NON sono responsabile per qualsiasi danno che può scaturire
dall'uso o abuso sia di questo documento che di qualsiasi file disponibile
per il download da questo sito. Non c'è nemmeno la garanzia che le
informazioni contenute in questo file siano corrette. Se non accettate queste
condizioni, allora lasciate ora questo sito.
Gli esempi in questo documento sono sviluppati per le applicazioni
Visual C/C++ MFC, ma la maggior parte del materiale trattato è abbastanza
slegato da MFC; quindi non preoccupatevi più di tanto se non conoscete
MFC.
La pagina di apertura di questo tutorial contiene una lista delle
Frequently Asked Questions. Guardatela prima se avete dei problemi; la risposta
alle vostre domande potrebbe essere lì..
1.2 Che cosa sono le DirectX? Prima del rilascio di Windows 95, molti giochi erano realizzati
per la piattaforma DOS, di solito utilizzavano qualcosa come DOS4GW o qualche
altro 32-bit DOS extender per ottenere l'accesso alla modalità protetta
a 32-bit. Windows 95, comunque, sembrò segnare l'inizio della fine del
prompt del DOS. Gli sviluppatori di giochi iniziarono a chiedersi come potevano
fare per scrivere dei giochi ottimizzati per girare sotto Windows 95 - i giochi
di solito richiedono la modalità full screen e hanno bisogno di avvicinarsi
il più possibile al vostro hardware. Windows 95 sembrò essere
"infastidito" da ciò. Il DOS aveva permesso agli sviluppatori
di programmare il più "vicino alla macchina" possibile, cioè,
andare diritti all'hardware, senza passare per strati di strazione ed incapsulamento.
In questo periodo, le informazioni extra di una API generica avrebbero reso
i giochi troppo lenti. Così la risposta di Microsoft a questo problema fu un
Software Development Kit (SDK) chiamato DirectX. Le DirectX sono un orribile,
progettato stupidamente e superficialmente, voluminoso, brutto e confuso bestione
(*) di una API (Application Programming Interface)
che ha portato molti programmatori all'alcolismo. All'inizio furono comprate
da una società londinese, la RenderMorphics, e semplicemente rilasciate
col nome di DirectX 2. Le DirectX 3 furono probabilmente la prima release "seria"
della Microsoft, che le spinse attivamente verso l'obiettivo di diventare le
API per la programmazione di giochi del futuro. Essere la più grande
software company del pianeta e essere gli sviluppatori del sistema operativo
che equipaggia circa il 90% dei pc esistenti servì allo scopo. I produttori
di hardware si resero conto rapidamente che la cosa più prudente da fare
era seguire la Microsoft, ed ognuno cominciò a produrre i driver DirectX
per il loro hardware. Sotto molti aspetti fu una cosa positiva per gli sviluppatori
di giochi. La versione corrente (al momento della scrittura di questo paragrafo)
è DirectX 6.1. Dalle DirectX originali sono stati introdotti un sacco
di miglioramenti. Per esempio, la documentazione, che all'inizio faceva schifo,
non è più così schifosa.
Uno degli scopi principali delle DirectX è di fornire
uno standard per accedere alle periferiche hardware di marche e tipi differenti.
Per esempio, le Direct3D forniscono un'interfaccia di programmazione "standard"
che può essere usata per accedere alle caratteristiche di accelerazione
hardware 3D di quasi tutte le schede 3D presenti sul mercato, che hanno un driver
Direct3D scritto per esse. In teoria si ritiene di rendere possibile, per una
applicazione, di girare in maniera ottimale su tutte le svariate configurazioni
hardware presenti allo stesso modo. In pratica, di solito non è così
semplice.
le API DirectX sono progettate principalmente per scrivere giochi,
ma possono essere usate anche in altri tipi di applicazioni. Le API al momento
sono suddivise in cinque sezioni principali:
1.2.1 Componenti DirectX Inoltre, le DirectX 6(? controllatelo) introducono qualcosa chiamato
DirectMusic, che si suppone di rendere ai programmatori più facile introdurre
la musica nei loro giochi in modo che lo stile musicale cambi a seconda del
tipo di azione che si sta svolgendo nel gioco.
1.3 Prestazioni delle DirectX e accelerazione hardware Sebbene le prestazioni delle Direct3D in modalità software
non siano così scadenti, non colpiscono abbastanza in giochi seri. Le
DirectX sono state progettate avendo l'accelerazione hardware in mente. Cercano
di fornire un accesso all'hardware del livello più basso possibile, rimannedo
nel contempo ancora una interfaccia generica. Fornire funzioni come il disegno
di triangoli 3D da far eseguire alla scheda grafica, libera la CPU (Central
Processing Unit) per lo svolgimento di altri compiti. Gli acceleratori hardware
Direct3D tipici, hanno almeno 4 o preferibilmente 16 o più Megabytes
di memoria RAM per memorizzare le texture maps (immagini bitmapped fatte di
piccoli punti chiamati "pixels"), textures, sprites, overlays e altro.
Le DirectDraw e le Direct3D sono costruite come uno strato relativamente
sottile sull'hardware, utilizzando quello che vienen chiamato "hardware
abstraction layer" (HAL) delle DirectDraw. Per funzionalità non
fornite da alcune schede, viene fornita una implementazione software equivalente
attraverso l'"hardware emulation layer" (HEL).
1.4 DirectX e COM Il set di moduli delle DirectX sono costruiti come oggetti COM
(Component Object Model). COM è ancora un'altra brutta interfaccia della
Microsoft - sebbene le versioni più nuove di COM non facciano schifo
come le prime. Non capitemi male, non sono contro l'esistenza di qualcosa che
faccia quello che fa il COM - ma l'implementazione lascia molto a desiderare.
Ad ogni modo,un oggetto COM è un po' come una classe C++, in quanto incapsula
una serie di metodi e attributi in un singolo modulo, e poiché fornisce
una sorta di modello di ereditarietà, allora un oggetto COM può
essere costruito per supportare tutti i metodi dei suoi oggetti di origine e
aggiungerne altri.
Non avete bisogno di conoscere molto sul COM per usare le DirectX,
quindi non preoccupatevene molto. Utilizzerete un po' il COM quando inizializzerete
oggetti e li cancellerete, e quando controllerete i valori restituiti da chiamate
a funzione, ma è più o meno solo questo.
Disclaimer
DirectDraw
Capacità grafiche a 2 dimensioni, superfici, double buffering,
etc
Direct3D
API relative alla programmazione 3D enormemente pratiche.
DirectSound
Suono; suono 3D
DirectPlay
Sempifica lo sviluppo di giochi di rete
DirectInput
Accesso a varie periferiche di input
Diagramma che illustra dove si adatta l'architettura DirectDraw/Direct3D, fiduciosamente
in maniera accurata.
Articolo di David Joffe (http://www.geocities.com/SoHo/Lofts/2018/); Ulitmo aggiornamente: 17 Aprile 1999
---
Traduzione: Papero - IPG 1999
Eng?Ita! Team
http://www.ItaProGaming.com