0
    GLuint32                fbo[2];
    GLuint32                rbo[2];
    GLuint32                texture[2];

    glGenFramebuffers       (2, fbo);
    glGenTextures           (2, texture);
    glGenRenderbuffers      (2, rbo);

    glBindTexture           (GL_TEXTURE_2D, texture[0]);
    glBindRenderbuffer      (GL_RENDERBUFFER, rbo[0]);
    glBindFramebuffer       (GL_READ_FRAMEBUFFER, fbo[0]);

    glTexImage2D            (GL_TEXTURE_2D, 0, GL_RGBA8, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
    glRenderbufferStorage   (GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, 32, 32);
    glFramebufferTexture2D  (GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture[0], 0);
    glFramebufferRenderbuffer(GL_READ_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rbo[0]);
    glCheckFramebufferStatus(GL_READ_FRAMEBUFFER);

    glBindTexture           (GL_TEXTURE_2D, texture[1]);
    glBindRenderbuffer      (GL_RENDERBUFFER, rbo[1]);
    glBindFramebuffer       (GL_DRAW_FRAMEBUFFER, fbo[1]);

    glTexImage2D            (GL_TEXTURE_2D, 0, GL_RGBA8, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
    glRenderbufferStorage   (GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, 32, 32);
    glFramebufferTexture2D  (GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture[1], 0);
    glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rbo[1]);
    glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER);

コードの後半で、

    glBindTexture           (GL_TEXTURE_2D, texture[0]);
    glTexImage2D            (GL_TEXTURE_2D, 0, GL_RGBA32UI, 32, 32, 0, GL_RGBA_INTEGER, GL_UNSIGNED_INT, NULL);
    glFramebufferTexture2D  (GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture[0], 0);

読み取りバッファのフォーマットと書き込みバッファのフォーマットは同じですが、期待されるものは次のとおりです: 読み取りバッファ: GL_RGBA32UI、描画バッファ: GL_RGBA

しかし、私がやったとき(glBindTextureを削除)

glTexImage2D            (GL_TEXTURE_2D, 0, GL_RGBA32UI, 32, 32, 0, GL_RGBA_INTEGER, GL_UNSIGNED_INT, NULL);
glFramebufferTexture2D  (GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture[0], 0);
glBlitFramebuffer       (0, 0, 16, 16, 0, 0, 16, 16, GL_COLOR_BUFFER_BIT, GL_NEAREST);

期待どおりの結果が得られます。ここで何が欠けていますか?誰かがこれがどのように機能するかを理解するのを手伝ってくれますか?

4

0 に答える 0