\\ Home : Articoli : Stampa
Occlusion Query
Di RobyDx (del 06/08/2007 @ 09:54:33, in DirectX9, linkato 2206 volte)

La tecnica dell'occlusion query è un meccanismo grazie al quale directX riesce a dirvi se un poligono è visibile o meno agli occhi della telecamera.

Dim q As Direct3D.Query

q = New Direct3D.Query(device, QueryType.Occlusion)

Con queste istruzioni avete creato un oggetto per effettuare una query di tipo occlusion. All'interno della scena

q.Issue(IssueFlags.Begin)
renderizzate qualcosa
q.Issue(IssueFlags.End)

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. L'occlusion query ha intuibili vantaggi. Il primo è migliorare le prestazioni. Infatti un trucco è quello di creare un bounding box (un parallelepipedo che contenga tutto l'oggetto), posizionarlo nella scena al posto dell'oggetto e verificare che questi sia visibile e solo in quel caso renderizzare l'oggetto originale. Insomma, un pratico test di visibilità. Sapere quanti pixel può essere usato anche all'interno del gameplay, per vedere se siamo visibili agli occhi di un nemico o che percentuale del corpo di un oggetto non è nascosto dalla scena.

Esempio VB.Net