Domanda

Ho lavorato con il depth buffer in OpenGL (JOGL) per garantire alcuni elementi sono resi di fronte agli altri disabilitando il buffer di profondità (dettagliato nella mia domanda precedente Java OpenGL risparmio buffer di profondità ).

Questo funziona, tranne quando ho impostato il colore di un elemento che è in fase di elaborazione quando il test di profondità è disabilitato, nessuno dei lucentezza materiale si presenta. La voce è reso come una versione più scura del colore originale (sembra che non v'è alcun effetto di illuminazione realmente applicato ad esso). C'è una ragione per cui questo sarebbe successo? e come potrei evitare questo?

Grazie, Jeff

È stato utile?

Soluzione

Dal momento che hai avuto nessuna risposta fino ad ora, cercherò di dare il mio colpo, anche se sono davvero un po 'di indovinare qui.

A pochi motivi posso immaginare, perché l'effetto che vedete sarebbe accaduto:

  • In contrasto con l'ambiente e componente diffusa del modello di illuminazione, la componente speculare deve tener conto della posizione dell'occhio rispetto all'oggetto e la sorgente luminosa. Quindi questo sarà probabilmente più veloce, quando OpenGL utilizza il buffer di profondità. Presumo, che in questo modo - per ogni pixel da elaborare - potrebbe utilizzare il valore di profondità per completare coordina l'occhio con la componente z

  • .
  • Forse è anche legato alla attenuazione della luce? Quando si utilizza attenuazione della luce, OpenGL calcola la distanza, che la luce deve percorrere prima di raggiungere l'occhio (o è semplificare calcolando solo la distanza tra la luce e l'oggetto? Non sono sicuro.)

Quindi presumo, che non è possibile utilizzare l'illuminazione in modo corretto senza un buffer di profondità. Credo che lei ha citato nel tuo post di altri, che non si può semplicemente cancellare il buffer di profondità, perché interferirebbe con il resto dell'applicazione? Penso che ci dovrebbe essere una soluzione con gli stampini, qualcosa di simile a "Esempio 10-1: utilizzando il test Stencil" in http://www.glprogramming.com/red/chapter10.html (è scritto in C, ma spero che sia simile a JOGL). Lo stencil sarebbe semplicemente bloccare l'applicazione restante dal disegno sopra i pixel preziosi.

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