Я пытаюсь повторно использовать FBO, который ранее использовал для прямого рендеринга в текстуру.
Я хочу выполнить рендеринг в этом FBO, не затрагивая текстуру, и захватить пиксели с помощью glReadPixels.
Обычно я бы рендерил что угодно и получал пиксели с помощью glReadPixels, и это работает, но это влияет на мою предыдущую текстуру. По этой причине я пытаюсь отделить текстуру от FBO, используя glFramebufferTexture2D с дескриптором текстуры равным 0. После этого glReadPixels возвращает только черный экран, почему?
CODE:
Gdx.gl20.glBindFramebuffer(GL20.GL_FRAMEBUFFER, getFBOHandle());
Gdx.gl20.glFramebufferRenderbuffer(GL20.GL_FRAMEBUFFER, GL20.GL_DEPTH_ATTACHMENT, GL20.GL_RENDERBUFFER, getDBOHandle());
//detach texture previously used, if I dont detach, glReadPixels works, but overwrites the texture
Gdx.gl20.glFramebufferTexture2D(GL20.GL_FRAMEBUFFER, GL20.GL_COLOR_ATTACHMENT0, GL20.GL_TEXTURE_2D, 0, 0);
int status = Gdx.gl20.glCheckFramebufferStatus(GL20.GL_FRAMEBUFFER);
if (status != GL20.GL_FRAMEBUFFER_COMPLETE) System.out.println("FBO ATTACHMENT INCOMPLETE");
Gdx.gl20.glViewport(0, 0, 2048, 1500);
//CLEAR SCREEN USING SPECIFIC COLOR TO SEE WHAT HAS BEEN REDRAWN
Gdx.gl20.glClearColor(0.5f, 1, 1, 1);
Gdx.gl20.glClear( GL20.GL_DEPTH_BUFFER_BIT | GL20.GL_COLOR_BUFFER_BIT);
Gdx.gl20.glFlush();
...
glReadPixels follows
...
Я хотел бы правильно отсоединить предыдущую текстуру, отрендерить что-то в этом FBO и захватить пиксели, а затем снова использовать FBO для прямого рендеринга в текстуру (восстановить предыдущее состояние).
Как мне этого добиться?
- Я не хочу создавать еще один FBO из-за ограниченности ресурсов
- работа с Opengl ES2