Domanda

Sto utilizzando FBOs nel mio OpenGL codice e sto vedendo gli errori di compilazione su GL\_FRAMEBUFFER\_INCOMPLETE\_DUPLICATE\_ATTACHMENT\_EXT.Qual è la causa di questo e come posso risolvere il problema?

È stato utile?

Soluzione

La causa di questo errore è una versione precedente di glext.h , che ha ancora questa definizione. Mentre le versioni più recenti di GLEW no. Questo porta a errori di compilazione nel codice che hai scritto in precedenza o ottenuto dal web.

La definizione GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT per FBO era presente nella specifica (e quindi nei file di intestazione). Ma è stato successivamente rimosso. Il motivo può essere trovato nella specifica dell'estensione FBO (cercare il numero 87):

(87) What happens if a single image is attached more than once to a
     framebuffer object?

     RESOLVED: The value written to the pixel is undefined.

     There used to be a rule in section 4.4.4.2 that resulted in
     FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT if a single
     image was attached more than once to a framebuffer object.

         FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT   0x8CD8

         * A single image is not attached more than once to the
           framebuffer object.

           { FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT }

     This rule was removed in version #117 of the
     EXT_framebuffer_object specification after discussion at the
     September 2005 ARB meeting.  The rule essentially required an
     O(n*lg(n)) search.  Some implementations would not need to do that
     search if the completeness rules did not require it.  Instead,
     language was added to section 4.10 which says the values
     written to the framebuffer are undefined when this rule is
     violated.

Per correggere questo errore, rimuovi tutto l'utilizzo di GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT dal tuo codice.

Se ciò non è possibile nella tua configurazione, aggiungi una definizione fittizia al tuo file glext.h o glew.h in questo modo:

#define GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT 0x8CD8
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top