J'utilise FBO s dans mon code OpenGL et je vois des erreurs de compilation sur GL\_FRAMEBUFFER\_INCOMPLETE\_DUPLICATE\_ATTACHMENT\_EXT
. Quelle est la cause de cela et comment puis-je le réparer?GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT erreurs
Répondre
La cause de cette erreur est une ancienne version de NVIDIA glext.h, qui a toujours cette définition. Alors que les versions les plus récentes de GLEW ne le font pas. Cela conduit à des erreurs de compilation dans le code que vous avez écrit précédemment ou obtenu sur le web.
La définition de GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT pour FBO utilisée pour être présent dans la spécification (et donc dans les fichiers d'en-tête). Mais, il a été retiré plus tard. La raison se trouve dans le FBO extension specification (cherchez question 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.
Pour corriger cette erreur, supprimez toute utilisation de GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT à partir de votre code.
Si cela est impossible dans votre configuration, puis ajouter une définition factice à votre glext.h ou glew.h fichier comme ceci:
#define GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT 0x8CD8