La creazione di un progetto da zero in Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Visual Basic e DirectX (prima lezione) di Andrea Martelli

DirectX è una collezione di tecnologie e metodi che copre un ampio aspetto della programmazione multimediale. Questo significa avere la possibilità di sviluppare una larga serie di soluzioni che vanno dalle presentazioni multimediali ai giochi veri e propri . La serie di articoli che presento è però una semplicficazione della tecnologia DirectX, che nella realtà si estende ben oltre gli esempi che verranno illustrati in queste lezioni.
Tutto il lavoro svolto da adesso in avanti sarà in ogni caso possibile grazie alla compatibilità tra DirectX e Visual Basic, o meglio, grazie alla possibilità di sfruttare una libreria (presente nel file vbx7.dll) che consente di controllare in maniera virtuale praticamente ogni aspetto di un'applicazione multimediale.
Parte di DirectX è l'APIDirectDraw, oggetto principale della prima parte del corso, che permette la gestione della grafica bidimensionale (in pratica ogni gioco per PC che sfrutti la grafica bidimensionale è stato creato attraverso un intenso utilizzo di DirectDraw). Grafica 2D controllata normalmente dalla scheda video del proprio computer con la quale DirectDraw scambia dati in modo diretto ossia senza dover subire la supervisione del sistema operativo, attraverso l'utilizzo dei drivers forniti dal produttore della suddetta scheda. L'operazione di sviluppo dei drivers associati alle schede video avviene (s)fortunatamente sotto la stretta vigilanza di Microsoft (per ovvi problemi di compatibilità con gli standard). Questo permette oltretutto di evitare una serie di operazioni aggiuntive legate alla programmazione dell'hardware. Adesso che abbiamo parlato di grafica statica, concentriamoci per un momento sulle animazioni, dicendo che possono essere realizzate animazioni anche molto complesse attraverso la disposizione sullo schermo di più bitmap differenti, in tempi molto rapidi (16 frames al secondo), per dare all'occhio umano la percezione di un movimento che nella realtà non esiste.
Se le immagini che vengono mostrate sul piano (la Form) fossero delle palline da biliardo, il risultato sarebbe simile a questo:


Come elemento aggiuntivo, DirectDraw permette inoltre di sfruttare tutti i vantaggi derivanti dall'installazione dei componenti accessori alla scheda video.
Che cosa si può ottenere con DirectDraw? Innanzitutto la gestione di sprites e di bitmaps (che oltre a poter essere visualizzate possono essere sottoposte a particolari operazioni, utilizzando l'API BITBLT o Bit Block Transfer.

Come ho detto poco fa DirectDraw, come parte di DirectX si concentra nella libreria vbx7.dll, la libreria DirectX per Visual basic (disponibile a tutti i programmatori sin dal Giugno 1997). La suddetta libreria contiene oltretutto la descrizione degli oggetti DirectX utilizzabili per la programmazione in Visual Basic. Prima di passare al codice vero e proprio conviene allora (anzi, è proprio obbligatorio) andare in Progetto, scegliere la voce Riferimenti e dalla tabella riferimenti spuntare la casella che indica: "DirectX 7 for Visual Basic Type Library". Nel caso in cui non si disponga di DirectX 7, sarà possibile scaricare il file del setup dal sito ufficiale di Microsoft.

Innanzitutto facciamo una piccola prova per vedere se tutto funziona. Aprire un nuovo progetto (EXE Standard, naturalmente) ed inserire il riferimento "DirectX 7 for Visual Basic Type Library". Nell'evento Load di Form1 scrivere quanto segue:

Private Sub Form_Load()
Dim DirectDraw As IDirectDraw
DirectDrawCreate ByVal 0&, DirectDraw, Nothing
Set DirectDraw = Nothing
End Sub

Diamo quindi l'avvio a questa piccola applicazione di prova. Possono accadere tre eventualità:
1) il programma non viene compilato. In questo caso Visual Basic non è stato impostato in modo da puntare alla libreria denominata "DirectX 7 for Visual Basic Type Library". Se così fosse accertarsi che nella tabella Riferimenti la voce sia contrassegnata dal segno di spunta;
2) il programma non si avvia. Questo significa che il sistema ha rilevato dei problemi legati ad una cattiva (o mancante) installazione di DirectX;
3) il programma si avvia ma non accade nulla. Questa è l'eventualità più desiderabile fra le tre qui esposte. Infatti non è previsto che accada nulla di particolare in quanto il progetto è solamente una sorta di test: se il progetto si è avviato senza problemi, allora va tutto bene.
Nessuno si preoccupi per adesso del significato che ha il codice contenuto in queste poche righe. Successivamente riprenderemo alcune nozioni che saranno sufficienti a comprendere tutto ciò che è stato scritto.

Prima di terminare questa prima lezione tuffiamoci nel codice. La prima cosa da fare è la stessa che faremmo in presenza di qualsiasi altra libreria esterna a Visual Basic. Come infatti nel corso di Visual Basic per Word è stata dichiarato objWord come facente parte della categoria delle applicazioni Word ed objDoc facente parte della categoria dei documenti Word, in questo caso specifico dichiareremo objDx come facente parte della categoria di applicazioni DirectX7 e objDraw7 come elemento della categoria DirectDraw. Questi primi oggetti, ossia objDx ed objDraw7 sono essenziali per la continuazione del progetto in quanto saranno utilizzati in seguito per creare ed inizializzare tutti gli altri oggetti di cui si farà uso. Essendo tutti gli altri oggetti specificazioni di questi due (o comunque essendo ad essi strettamente legati), la vita di objDx e di objDraw7 deve durare per tutta la vita dell'applicazione, salvo poi impostarli come tutti gli oggetti DirectX a Nothing nell'istante immediatamente anteriore alla chiusura dell'applicazione. In questo modo gli oggetti perderanno la propria validità di oggetti DirectX. In caso contrario, ossia se questa procedura non fosse seguita, si verificherebbe un sicuro (quanto indesiderato) crash del sistema.
Lo schema da utilizzare è infatti il seguente:



Definiamo allora gli oggetti objDx e objDraw7

Dim objDx As DirectX7
Dim objDraw7 As DirectDraw7

Per adesso direi che di nozioni ne sono già state tirate in ballo a sufficienza. Certo questa lezione non entra nel vivo della programmazione con DirectDraw. Sicuramente il prossimo articolo riserverà molte sorprese.

Archivio:ndexed
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it