Di RobyDx (del 09/08/2007 @ 11:06:17, in DirectX9, linkato 4822 volte)
DirectInput è la componente di DirectX responsabile della gestione degli input da periferiche esterne. Nonostante Visual Basic fornisca una gestione molto affidabile per la gestione di tastiera e mouse questa si rivela troppo lenta per affrontare "le fatiche" di un gioco in real time. Se ad esempio un gioco gira a 60 frame al secondo, anche gli input devono essere gestiti con la stessa frequenza ed è quindi necessaria un controllo più diretto. Inoltre Direct Input è l'unico modo per ottenere input da JoyStick, gamepad, volanti ed ogni altra periferica esistente. Capite quindi che Direct Input è fondamentale per un gioco. Usare Direct Input è molto semplice ed in DirectX 9 ancora di più. La prima periferica che andiamo ad analizzare sarà la tastiera del PC....
Ora tutto ciò che è stato renderizzato sullo schermo all'interno del blocco begin e end non è stato renderizzato ma solo calcolato. Nella query è stato memorizzato il numero dei pixel visibili dell'oggetto.
Dim n As Integer n = q.GetData(GetType(Integer), True)
Con queste istruzioni possiamo leggere questo numero, in n ci sarà il numero dei pixel che verranno renderizzati sullo schermo....
Di RobyDx (del 06/08/2007 @ 09:48:43, in DirectX9, linkato 1635 volte)
Caricate una bitmap 32x32 su una superficie
Dim c As Surface c = device.CreateOffscreenPlainSurface(32, 32, Format.A8R8G8B8, Pool.Default) SurfaceLoader.FromFile(c, AppPath() & "\icona.bmp", Filter.None, Color.White.ToArgb)
ora assegnatela al device
device.SetCursorProperties(X, Y, c)
X e Y sono lo slittamento che il cursore avrà rispetto all'effettiva posizione del mouse (ad esempio impostando 16,16 il mouse cliccherà nel centro dell'icona mentre con 0,0 nell'angolo alto-sinistro). C è la superficie creata
device.ShowCursor(True)
Questa istruzione mostra l'icona. Va inserita nel ciclo, possibilmente immediatamente subito dopo il doEvents
Impostando a false invece il mouse sarà invisibile. Questo sistema è abbastanza inutile per cursori fissi mentre è utile per cursori in movimenti per la velocità di cambio.
Di RobyDx (del 04/08/2007 @ 09:14:06, in DirectX9, linkato 2078 volte)
Come sappiamo in DirectX possiamo usare molti formati per le immagini come bitmap, jpeg o tga. Tutte queste però vengono gestiste come bitmap al momento dell'effettivo utilizzo sia dal punto di vista della memoria che della velocità. Esistono però alcuni formati speciali che vengono sfruttati in maniera migliore i DXT. Ci sono 5 formati da DXT1 a DXT5 che si differenziano per spazio occupato e velocità di rendering. Per utilizzare questi formati potete o caricare un immagine effettuando una conversione in questo formato o caricare un'immagine da file già in questo formato....
Di RobyDx (del 04/08/2007 @ 09:12:23, in DirectX9, linkato 1575 volte)
Le superfici in DirectDraw sono come sappiamo degli array di numeri corrispondenti ai colori. L'array di colori viene estratto eseguengo una operazione chiamata accesso alla memoria che genera una matrice di dimensione larghezza x altezza. Ogni punto di questa matrice è un intero che tramite la classe color possiamo facilmente gestire per ottenere o inserire il colore. Prima che iniziate a procedere vi avverto che DirectDraw presenta un grosso bug in questa istruzione. Se avete aggiornato alla versione 9.0b questa funzionerà altrimenti non troverete questa istruzione e vi sarà impossibile compiere questa azione....
Cambiando il colore nell'opzione TextureFactor potrete far virare il colore ed in particolare modificando il valore alpha del colore potrete deciderne il grado di trasparenza. Per tornare alla normalità impostare l'alphaArgument a Diffuse. Nota fondamentale: come dovreste aver capito gli effetti di alphablending funzionano solo se gli oggetti vengono renderizzati in ordine dal più lontano al più vicino. Se invece l'oggetto più vicino verrà renderizzato prima di quello che gli sta dietro l'effetto non funzionerà.
Di RobyDx (del 03/08/2007 @ 09:58:19, in DirectX9, linkato 1780 volte)
La gamma correction è la gestione della luminosità dei colori sullo schermo. Ognuno dei 16 milioni di colori che le schede di oggi supportano ha un diverso grado di luminosità espresso con un valore da 0 a 65535 permettendo migliore resa grafica. Molte schede danno la possibilità di modificare la gamma del monitor ma DirectX permette di farlo dinamicamente nei giochi fullscreen. Possibilità? Potete ad esempio scurire tutti i colori per creare chiusure degli schermi o aumentarli per far sembrare più luminosa una stanza. Potete addirittura aumentare solo una tonalità per far virare i colori verso quello che volete....
Di RobyDx (del 03/08/2007 @ 09:56:07, in DirectX9, linkato 1404 volte)
Come in DirectDraw è possibile anche in Direct3D creare velocemente dei rettangoli pieni di ogni colore sullo schermo. Questo tramite l'istruzione
device.ColorFill(superficie, rettangolo, Color)
Con questa istruzione potete facilmente riempire rettangoli su una qualunque superficie (estratta ad esempio anche dalle texture). Naturalmente anche il backbuffer è una superficie quindi potete usare direttamente questa
device.ColorFill(device.GetBackBuffer(0, 0, BackBufferType.Mono), New Rectangle(0, 0, 300, 300), Color.White)
In questo esempio riempio il backbuffer di bianco nel rettangolo specificato. Utile