2012-02-16 15 views
5

Attualmente ho un motore di rendering che utilizza più passaggi in cui varie parti dell'immagine sono renderizzate su trame, e quindi combinate usando shader. Funziona, e ora vorrei attivare il multicampionamento.Come rendere oggetti Framebuffer su trame multicampionate?

Ho letto qui (http://www.opengl.org/wiki/Framebuffer_Object_Examples#MSAA) che, con OpenGL, non è possibile allegare un GL_TEXTURE2D_MULTISAMPLE a un oggetto framebuffer.

Sembra un modo per utilizzare il multicampionamento e avere ancora accesso al risultato in quanto texture utilizza un buffer di rendering multicampionato e quindi copia il risultato in una trama multicampione.

La mia domanda è: quale sarebbe il modo migliore per andare avanti?

  • È possibile eseguire il rendering in un buffer di rendering e utilizzare l'output nel mio shader, senza copiare in una trama?
  • Dovrei effettivamente copiare il contenuto del buffer in una trama e quindi usarlo?
  • C'è un'altra soluzione migliore?

Grazie.

risposta

6

ho letto qui (http://www.opengl.org/wiki/Framebuffer_Object_Examples#MSAA) che, con OpenGL, non si può allegare un GL_TEXTURE2D_MULTISAMPLE a un oggetto framebuffer.

Leggi di nuovo. Non dice nulla sulle trame GL_TEXTURE_2D_MULTISAMPLE. In realtà, riprendo quello: non leggere di nuovo quella pagina. Se vuoi informazioni utili su FBO, leggi the page on Framebuffer Objects che spiega il comportamento 3.x. La pagina a cui ti sei collegato è vecchia.

Indietro nei giorni EXT, tutto ciò che avevi erano i renderbuffer multisampling, perché le trame multicampione non esistevano. È possibile creare buffer con campionamento multiplo, ma con trama non è possibile. Potresti solo batterli.

In 3.3 OpenGL, è possibile creare trame multicampionate. E puoi allegarli come qualsiasi altra trama a un FBO.

+0

Grazie per la risposta, e grazie per queste risorse che avevo trovato ora e poi mai mai identificato come autorevole. – PierreBdR