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);
期待どおりの結果が得られます。ここで何が欠けていますか?誰かがこれがどのように機能するかを理解するのを手伝ってくれますか?