Bonjour,
suite à une judicieuse suggestion, je m'intéresse aux FBO.
Après avoir grosso modo compris de quoi il retournait, j'ai eu confirmation que c'était ce que je recherchais... maintenant, j'essaie de les utiliser.
Le bout de code que j'essaie d'écrire avec Visual C++ est celui-ci (pour commencer):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 if (l_DrawInFBO) { // CREATES TARGET TEXTURE width = 320; height = 480; bytes = new unsigned char[width*height*4]; // => Unsigned char *, GL_RGBA, GL_UNSIGNED_BYTE glGenTextures(1, &tex); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, tex); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, bytes); // CREATES FBO glGenFramebuffersEXT(1, &fbo); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo); glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, tex, 0); } /
Problème :
Ha! On me dit quelque part que je dois rajouter au choix : glee ou glew (les deux sont dispos, donc j'essaie les deux)....\GlView.cpp(169) : error C2065: 'glGenFramebuffersEXT' : undeclared identifier
...\GlView.cpp(170) : error C2065: 'glBindFramebufferEXT' : undeclared identifier
...\GlView.cpp(171) : error C2065: 'glFramebufferTexture2DEXT' : undeclared identifier
...\GlView.cpp(187) : error C2065: 'glCheckFramebufferStatusEXT' : undeclared identifier
Pas de chance, le compilo râle parceque gl.h et glext.h précèdent glew.h.
Seulement, il y a un hic : je peux difficilement virer ces deux premiers, car ils sont planqués un peu de partout dans le code (je ne développe qu'un module dans une usine à gaz déjà plus ou moins rodée), et qu'ils sont à tous les niveaux de la chaîne (à part tout en haut... ce qui m'a suggéré la suite).
Donc je tente un truc pas propre... je le mets tout en haut de la chaîne, dans le StdAfx.h (je devine que ce n'est pas très propre, mais je suis dans la phase de test, alors j'occulte sans remords le sentiment de culpabilité prémonitoire).
Et là, je me fais encore insulter :
...\VolRen.cpp(20) : warning C4273: '__glewTexImage3DEXT' : inconsistent dll linkage. dllexport assumed.
et pour info , dans le VolRen.cpp (qui est un volume Renderer utilisé par la GlView, vous l'aurez deviné) :Creating library Debug/TestVolRen.lib and object Debug/TestVolRen.exp
GlView.obj : error LNK2001: unresolved external symbol __imp____glewFramebufferTexture2DEXT
GlView.obj : error LNK2001: unresolved external symbol __imp____glewBindFramebufferEXT
GlView.obj : error LNK2001: unresolved external symbol __imp____glewGenFramebuffersEXT
GlView.obj : error LNK2001: unresolved external symbol __imp____glewCheckFramebufferStatusEXT
Debug/TestVolRen.exe : fatal error LNK1120: 4 unresolved externals
chose qui marchait très bien jusque là....PFNGLTEXIMAGE3DEXTPROC glTexImage3DEXT;
Bon, à ce stade là, ça commence à devenir un peu flou dans mon esprit, donc je préfère soumettre à votre appréciation ce problème plutôt que de continuer à mettre mon nez dans mon usine à gaz.
Pourriez-vous me donner votre avis ici, et m'indiquer le cas échéant de quelle façon je peux utiliser le bout de code du haut en sachant que je ne peux toucher qu'à mon module et pas à tous les autres.
PS : WE de pâques oblige, je ne consulterai pas ce sujet avant mardi. Ne vous en offensez pas!
Partager