Я пытаюсь сделать текстуру, а затем использовать текстуру, но по какой-то причине она не работает.Render to texture: всегда черная текстура
Как описано в компании Apple documentation,
Я сначала выделить FBO для рендеринга в текстуру ..
glGenFramebuffers(1, &read_framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, read_framebuffer);
затем создать текстуру и прикрепить его к этому FBO ..
glActiveTexture(GL_TEXTURE0);
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8_OES, 64, 64, 0, GL_RGBA,
GL_UNSIGNED_BYTE, NULL);
glBindRenderbuffer(GL_RENDERBUFFER, 0);
glBindTexture(GL_TEXTURE_2D, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
texture, 0);
затем создайте fbo для рисования ..
glGenFramebuffers(1, &draw_framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, draw_framebuffer);
glGenRenderbuffers(1, &_colorRenderBuffer);
glBindRenderbuffer(GL_RENDERBUFFER, _colorRenderBuffer);
[_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:_eaglLayer];
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, _colorRenderBuffer);
Позже в части петли рендеринга ..
glBindFramebuffer(GL_FRAMEBUFFER, read_framebuffer);
(...off-screen drawing the scene here...)
glBindFramebuffer(GL_FRAMEBUFFER, draw_framebuffer);
Bind текстура, которая должна содержать мое закадровый рендеринг изображение ..
glBindTexture(GL_TEXTURE_2D, texture);
(..draw the scene with texture applied here...)
Однако, по какой-то причине текстура всегда черная. Здесь что-то не хватает?
Сразу после вызова 'glFramebufferTexture2D', какое значение возвращает' glCheckFramebufferStatus (GL_FRAMEBUFFER) '? – prideout
Он возвращает 36054 – Random