View Full Version : [C# & DirectX] Creare vertici trasparenti, come faccio?
Radeon89
21-05-2008, 22:12
Ciao a tutti!
Sto completando la mia tesina di maturità. Una parte di essa rappresenta le funzioni in due variabili, solo che ho un problema con il campo di esistenza della funzione. Mi spiego meglio:
prendendo la stringa inserita dall'utente, contenente l'espressione analitica della funzione, faccio passare con due cicli for uno dentro l'altro le variabili x e y, le sostituisco nell'espressione analitica e passo il tutto al parser che mi restituisce il risultato. I risultati vengono salvati in una matrice di larghezza e altezza opportune, a seconda dell'intervallo in cui voglio calcolare la funzione.
Solo che se il parser dà errore (cioè non può essere eseguita l'operazione, come ad esempio il log di un numero negativo) devo gestire il problema in qualche modo... Senza gestirlo mi ritrovo ad avere una funzione in cui l'altezza dei vertici (che in teoria non dovrebbero nemmeno esserci) è 0. Devo trovare un modo per non rappresentare quei triangoli, oppure, come ho pensato, farli trasparenti.
Quindi la domanda è appunto: come faccio a creare dei vertici trasparenti? O ancora meglio (dato che sono quelli che ho io nel mio programma e altrimenti ne devo creare di nuovi): si possono convertire dei vertici PositionNormalColored in vertici trasparenti in qualche modo??
Radeon89
22-05-2008, 09:45
Nessuno??
Non c'è bisogno di leggere la parte lunga in alto del mio primo post, la domanda è quella e basta, la prima parte era solo un'introduzione...:help:
^TiGeRShArK^
22-05-2008, 11:03
Nessuno??
Non c'è bisogno di leggere la parte lunga in alto del mio primo post, la domanda è quella e basta, la prima parte era solo un'introduzione...:help:
mai programmato con direct x..
ma non dovrebbe bastare settare il canale alpha a zero per quel triangolo in modo da ottenere una trasparenza assoluta? :fagiano:
Radeon89
23-05-2008, 12:00
Non posso agire sui triangoli, ma sui vertici, perché sono quelli gli oggetti, e non esiste nessun canale alpha per un vertice... Credo di dover usare le texture, anche se spero di no perché ho visto delle parti di codice ed è abbastanza complesso...
banryu79
23-05-2008, 12:51
Non posso agire sui triangoli, ma sui vertici, perché sono quelli gli oggetti, e non esiste nessun canale alpha per un vertice... Credo di dover usare le texture, anche se spero di no perché ho visto delle parti di codice ed è abbastanza complesso...
Ehm, guarda, non sono un esperto ma credo che settare il canale alpha alla trasparanza completa sia semplice: basta che imposti i valori del colore con cui disegni quei vertici in modo che Alpha sia = 0 se non sbaglio.
Mi riferisco al canale ARGB del colore: setti il canale "A" (Alpha Channel) a 0, non opaco (il max dovrebbe essere 255, massima opacità).
Spero di non aver fatto confusione :stordita:
DanieleC88
23-05-2008, 15:20
Nemmeno io ho mai usato DirectX, ma ad esempio con OpenGL è molto simile, per ogni vertice che disegni devi anche specificarne il colore con glColor*(), e lì ne puoi impostare anche l'opacità (con glColor4f()). Dovrà esserci sicuramente qualcosa di analogo. ;)
banryu79
23-05-2008, 15:44
cut
Beh, per la precisione nemmeno io so una ceppa di DirectX, e mi sono appunto ispirato alle OpenGL... :sperem:
Radeon89
23-05-2008, 18:32
XD ah, il canale Alpha è indicato con "A"??? XD XD XD Allora ho capito cosa devo modificare, appena posso provo. Avevo risolto momentaneamente il tutto impostando l'altezza dei vertici non validi ad un valore che sta fuori della visuale della telecamera!! XD
Il canale alpha ce l'hai se hai definito il colore come RGBA. Se usi la pipeline programmabile ricordati che devi ritornare l'alpha nel pixel shader.
Non devi per forza averlo sui vertici.
Ricorda che le primitive semi-trasparenti vanno disegnate per ultime in ordine dalla piu` lontana alla piu` vicina.
Radeon89
28-05-2008, 09:57
Il canale alpha ce l'hai se hai definito il colore come RGBA. Se usi la pipeline programmabile ricordati che devi ritornare l'alpha nel pixel shader.
Non devi per forza averlo sui vertici.
Ricorda che le primitive semi-trasparenti vanno disegnate per ultime in ordine dalla piu` lontana alla piu` vicina.
Come faccio a vedere se ho definito il colore come RGBA?? Perché mi sono accorto che assegnando ad un vertice il colore Black e come canale alpha 0 non cambia nulla, l'opacità è sempre quella, cioè quella massima... Ah, una cosa, ma riuscendo ad ottenere questa trasparenza, anche attivando l'illuminazione i vertici risulterebbero trasparenti??
Radeon89
28-05-2008, 11:31
Ho letto una parte di codice su Internet, e ho provato ad attivare l'alpha blend dal device (Device.RenderState.AlphaBlendEnable=true) solo che non cambia nulla... Potrei, in caso estremo, impostare il colore dei vertici che non devono essere visti come lo sfondo, ma se attivo l'illuminazione si vedrebbero... Non so come potrei fare... Spero di ricevere una spiegazione esauriente...:help:
^TiGeRShArK^
28-05-2008, 11:35
Come faccio a vedere se ho definito il colore come RGBA?? Perché mi sono accorto che assegnando ad un vertice il colore Black e come canale alpha 0 non cambia nulla, l'opacità è sempre quella, cioè quella massima... Ah, una cosa, ma riuscendo ad ottenere questa trasparenza, anche attivando l'illuminazione i vertici risulterebbero trasparenti??
...ma l'alpha non va impostato a 255 ? :fagiano:
o ricordo male io? :stordita:
Radeon89
28-05-2008, 11:59
Ci sono riuscito, solo che ora ho altri problemi (che casino gestire sto campo di esistenza...). Comunque bisogna impostarlo a 0. 0=completamente trasparente, 255=completamente opaco
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.