Newsgroup: it.comp.lang.visual-basic
Titolo: [forse OT] DirectX8 e effetti

Salve, mi scuso in anticipo se sono OT ma non sono riuscito a trovare alcun
ng che
parli di directX a livello di programmazione :)
Nessuno sà se è possibile (e se si come) applicare effetti (stile nebbia,
luci) a una
superfice Direct3DSurface8? Premetto che utilizzo la superfice come 2d e non
3d,
ho letto su tutorial in rete che è possibile con d3d, ma non sono riuscito a
capire
bene come... cioè ho capito che devo settare i parametri di rendering tipo:
   device.SetRenderState D3DRS_FOGENABLE, True
   device.SetRenderState D3DRS_FOGVERTEXMODE, tipo
   device.SetRenderState D3DRS_FOGTABLEMODE, tipo
   device.SetRenderState D3DRS_FOGCOLOR, colore
però settandoli in fase di creazione della device non ottengo alcun
risultato e
non avrei idea di dove impostarli altrimenti... :\
Grazie,
     DoPz

La Microsoft č diventata matta a programmare DirectX per fare in modo che
possano essere usate anche da VB, con tutto il modelli ad oggetti.....ma chi
č poi che veramente lo usa fino in fondo?
Tagliando corto, dubito che troverai qualcuno che possa rispondere ad una
domanda cosě, per lo meno in questo posto.......
Spero che tu mi possa contraddire, e alla svelta anche!!!!!
:-))))
Good working!!
---
Igor Damiani
igor.d...@light.it
http://www.igordamiani.it
ICQ : 11847262

      DoPz
He he he
Bada chi!!!!

risultato
Sei un po' generico, comunque, proviamo a riassumere la sequenza delle
operazioni. Se disegni su un form
Innanzi tutto occorre inizializzare la periferica:
' importante: avviare sempre con BeginScene e terminare con EndScene!
device.BeginScene
A questo punto imposti la texture per lo sfondo passando il riferimento
ad una interfaccia IDirect3DBaseTexture8, prendendola per esempio
da un file con CreateTextureFromFileEx.
Poi puoi eseguire delle funzioni di blending, tipo con SetTextureStageState.
A questo punto potresti mettere le luci e le riflessioni con SetRenderState
ed anche la nebbia :-)
Chiudi la scena con EndScene.
Ci vorrebbe un caso pratico, ma non saprei in poche righe. Se scavi un po'
sul sito microsoft, comunque, dovresti trovare esempi, o almeno spezzoni
di codice, anche in visual basic.
Disegna quando il form e' gia' visibile.
Spero di aver capito cosa volevi sapere ;-)
-- 
ciao, hal

Non credo che si possa fare su una Direct3DSurface8. Le luci e gli effetti
FOG sono elementi matematicamente legati a profondità, vettori di direzione,
proiezione, intensità ecc. che una D3DSurface8 non ha, essendo, tanto per
capirci, l'equivalente della proprietà Picture di una Picturebox (unità di
emissione di primitive Dx)
Quindi, secondo me, per fare una cosa del genere devi pensare in 3D:
Una soluzione potrebbe essere inizializzare la device d3d (vedi Dx SDK),
creare un poligono di 4 lati e porlo di fronte al punto di vista in modo che
simuli un background.
Carichi la bitmap come texture del poligono e poi imposti i vari coefficenti
luce/fog.
Detto così è molto stringato, in pratica è decisamente complesso.
Ti ricordo però che:
L'effetto FOG  è semplicemente la variazione del contrasto (gamma)
L'effetto luce è semplicemente la variazione di intensità del colore
entrambi possono essere applicati, in modo uniforme e non, su un bitmap
senza ricorrere alle directx.
Se già sei, per altri motivi, sotto Dx, prova a chiedere sul gruppo
microsoft.vb.directx. Li parli direttamente con i tizi che implementano le
API in microsoft (anche se spesso latitano!)
--
Fabio Guerrazzi
http://www.sourcecode4free.com/cgt
fab...@libero.it