2012-07-10 3 views
5

L'ordine dei triangoli di disegno nelle API 3D è garantito uguale al loro ordine nel buffer dell'indice?Ordine di disegno triangolare in DirectX/OpenGL

Ad esempio, se ho due triangoli sovrapposti in una singola chiamata di disegno e il test di profondità è disabilitato, il primo o il secondo triangolo saranno visibili alla fine?

Oppure devo emettere chiamate di estrazione separate per essere sicuro che il secondo triangolo appaia sopra al primo?

risposta

6

In OpenGL l'ordine è effettivamente conservato, in modo che l'algoritmo dei pittori possa essere utilizzato, ad esempio, quando si esegue il rendering della geometria semitrasparente.

Direct3D Non lo so per certo, ma direi che lo stesso vale anche lì.

+0

Grazie! Hai un link ad un documento ufficiale che dice che l'ordine verrà conservato? L'architettura affiancata (come Adreno o Xbox GPU) in cui il disegno viene eseguito separatamente in più riquadri non influisce su questo? – kaalus

+1

@kaalus: Posso garantire per l'ordinazione, anche se non posso per la vita di me trovare un riferimento in DX. GL ha almeno un riferimento nel passaggio p115 di 4.2 Profilo principale. piastrellatura non lo influenzerà. – Bahbar

+1

@Bahbar In effetti, è solo menzionato di passaggio. Ecco il testo attuale: "L'ordine relativo delle invocazioni dello stesso tipo di shader non è definito.Un negozio emesso da uno shader quando si lavora sulla primitiva B potrebbe completare prima di un archivio per la primitiva A, anche se la primitiva A è specificata prima della primitiva B Ciò vale anche per gli shader di frammenti, mentre gli output di framment shader vengono scritti nel framebuffer in ordine primitivo, i negozi eseguiti dalle invocazioni di framment shader non lo sono. " – kaalus