Bonjour,

Je souhaite faire du rendu offscreen en utilisant les renderbuffer objects, mais quand j'associe GL_COLOR_ATTACHMENT0 avec mon render buffer j'ai une erreur "GL_INVALID_OPERATION". Je ne comprends pas pourquoi.
Voici le morceau de code :

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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
    char *myargv [1];
    int myargc=1;
    myargv [0]=strdup("Reconstruction3D");
 
    glutInit(&myargc, myargv);
    glutInitDisplayMode(GLUT_SINGLE);
    glutCreateWindow("Reconstruction 3D Fenetre");
    glutHideWindow();
 
    glShadeModel(GL_SMOOTH);	// Smooth Shading
    glClearDepth(1.0f); // Depth Buffer
    glDepthFunc(GL_LEQUAL);
    glEnable(GL_DEPTH_TEST); // Active test de profondeur
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // // Active calcul de perspective
 
    glEnable(GL_BLEND);
    glEnable(GL_TEXTURE_2D);
 
    bool result = false;
    ST_GLEW_INIT(result);
    if (!result)
    {
      GPUREG_EXCEPTION("GLEW init error");
    }
 
...
 
    GLuint renderID;
    glGenRenderbuffers(1, &renderID);
    GLenum error = glGetError();
    if (error != GL_NO_ERROR)
    {
      GPUREG_TRACE_INFO("Error OpenGL glGenRenderbuffers " << error);
    }
    glBindRenderbuffer(GL_RENDERBUFFER, renderID);
    error = glGetError();
    if (error != GL_NO_ERROR)
    {
      GPUREG_TRACE_INFO("Error OpenGL glBindRenderbuffer " << error);
    }
    glRenderbufferStorage(GL_RENDERBUFFER, GL_LUMINANCE32F_ARB, targetTileSize.x(), targetTileSize.y());
    error = glGetError();
    if (error != GL_NO_ERROR)
    {
      GPUREG_TRACE_INFO("Error OpenGL glRenderbufferStorage " << error);
    }
 
    // Association de la sortie de rendu 0 (GL_COLOR_ATTACHMENT0) avec le render buffer
    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, renderID);
    error = glGetError();
    if (error != GL_NO_ERROR)
    {
      GPUREG_TRACE_INFO("Error OpenGL frame buffer " << error);
    }
Merci d'avance pour vos réponses.