Domanda

Al momento sto implementando il mio renderer utilizzando l'algoritmo di Z-Buffer. Una volta ho fatto i calcoli necessari (leggi: My Z-Buffer è riempito con i valori corretti) Io uso SDL al colore nei pixel necessarie. Sto usando un HWSurface per questo.

La mia domanda è, come posso rendere questo il più velocemente possibile? Con questo intendo il disegno stesso, posso fare ottimizzazioni nella mia struttura, il mio algoritmo, io lo farà più tardi, ma voglio essere sicuro che il disegno stesso è il più velocemente possibile.

Perché io ho la mia implementazione di uno Zbuffer (e ci saranno altri algoritmi in seguito) che non posso usare OpenGL, quindi non ci sono alternative?

Ora sto solo andando oltre tutti i miei punti nel Z-buffer e disegnare tutti i pixel che devono essere disegnati, uno per uno (e perché di z-buffer che devo fare questo, giusto?) E io lo chiamo un metodo DrawPixel. Per quanto riguarda SDL chiudo la mia superficie prima di andare oltre il z-buffer, disegnare tutti i pixel e sbloccarlo in seguito, questo non può andare più veloce per quanto ne so.

Qualche suggerimento?

È stato utile?

Soluzione

implementazioni software sono incredibilmente lenta che è, WARP rende Crysis su un hexacore i7 a un decimo del FPS che un 8800GT fa. Non troverete alcun prestazioni competitive in un Z-buffer di software implementato.

A Z-buffer non è un algoritmo particolarmente complesso ed è abbastanza improbabile che troverete un'implementazione che è più efficiente di un altro. Z-buffer non è qualcosa che si fa durante rasterization- è qualcosa che si fa durante il rendering dei pixel. Se la profondità del nuovo pixel è più lontano rispetto al valore attualmente scritta, non rendono il pixel oltre, per esempio, non calcolarlo di colore, ecc Non si disegna la z-buffer o qualcosa di simile. Non è come una specie in cui si potrebbe scegliere il tipo più efficiente per la vostra Algorithm- è più simile a una moltiplicazione di matrici, sono più o meno tutti uguali.

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