Domanda

Che cosa è la differenza tra l'uso di back-face culling e un buffer di profondità in OpenGL?

È stato utile?

Soluzione

Backface abbattimento è quando OpenGL determina quali facce sono rivolto verso l'osservatore e sono quindi invisibili. Pensate a un cubo. Non importa come la vostra ruotare il cubo, 3 facce saranno sempre invisibili. Capire che si affaccia questi sono, rimuoverli dalla lista dei poligoni da stabilire e basta dimezzato la vostra lista di disegno.

Profondità buffer è abbastanza semplice. Per ogni pixel di ogni poligono disegnato, confrontare è z valore al buffer z. se è inferiore al valore nel buffer z impostare il valore del tampone z come nuovo valore z tampone. Altrimenti, scartare il pixel. Profondità di buffering dà ottimi risultati, ma può essere piuttosto lento come ogni pixel richiede una ricerca di valore.

In realtà non c'è nulla di simile tra questi due metodi e sono spesso entrambi utilizzati. Dato un cubo si può tagliare fuori prima metà dei poligoni utilizzando abbattimento quindi disegnare utilizzando z-buffer.

Abbattimento può ridurre i poligoni resi, ma non è un algoritmo di ordinamento. Questo è ciò che Z buffer è.

Altri suggerimenti

Una proposta triangolo ha due lati, la faccia frontale e la faccia posteriore. Il lato che si sta guardando è determinato dall'ordine dei punti appaiono nell'elenco vertice (chiamato anche l'avvolgimento). Tipicamente elenchi dei triangoli sono alternati avvolgimento in modo da poter riutilizzare i precedenti due punti, ma il rivestimento di un triangolo dato nella striscia non fa alternate. Indietro faccia abbattimento è la fase di ottimizzazione dove nel triangoli nella scena che sono orientate lontano dalla vista vengono rimossi dalla lista dei triangoli per disegnare.

Un buffer di profondità (z-buffer) viene utilizzato per appendere sulla cosa più vicina (la profondità è relativa alla vista) che è già stato reso. Se la cosa che viene in su successivo nell'elenco pareggio è dietro a qualcosa che ho disegnato già (ad esempio, ha una profondità che lo colloca più lontano) posso saltare disegnarla, come è ostruito. Se la cosa nuova per disegnare è più vicina, ne traggo e posso aggiornare il buffer di profondità con il nuovo, il valore più vicino.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top