OpenGL에서 프레임 버퍼를 사용하여 출력 텍스처를 셰이더에서 가져 와서 다른 셰이더에서 사용하여 흐림 효과를 얻으려고합니다.ARCore OpenGL 프레임 버퍼 오류 (1286)
나는이 튜토리얼을 따라 내 프로젝트에 프레임 버퍼를 추가했다. http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/ http://opengles2learning.blogspot.com/2014/02/render-to-texture-rtt.html
은 결과적으로 내가 가진 : 초기화에
int[] temp = new int[1];
int FramebufferName = 0;
GLES20.glGenFramebuffers(1, temp, FramebufferName);
fboID = temp[0];
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, FramebufferName);
GLES20.glGenRenderbuffers(1, temp, FramebufferName);
int renderBufferId = temp[0];
GLES20.glBindRenderbuffer(GLES20.GL_RENDERBUFFER, FramebufferName);
GLES20.glRenderbufferStorage(GLES20.GL_RENDERBUFFER, GLES20.GL_DEPTH_COMPONENT16, 1080, 1920);
GLES20.glFramebufferRenderbuffer(GLES20.GL_FRAMEBUFFER,
GLES20.GL_DEPTH_ATTACHMENT, GLES20.GL_RENDERBUFFER, renderBufferId);
GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, newTextureID2, 0);
.
및 OnDrawFrame 방법에
나는이 :GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, fboId);
GLES20.glViewport(0, 0, 1080, 1920);
하지만 잘못된 프레임 버퍼 오류입니다 glError 1286 얻을. 문제는 아마도 2의 힘이 아닌 텍스처와 관련이 있다고 생각합니다. 그러나 ARCore의 카메라는 1080 x 1920을 반환합니다. glreadPixel을 사용하여 카메라 데이터를 비트 맵으로 가져옵니다. ARCore에서 비트 맵 또는 카메라의 크기를 수정하는 방법이 있습니까?
편집 : 실제로 버퍼 초기화 후 glerror를 확인하고 glError 1282가 발생했습니다. 지금 무엇이 잘못된 것인지 잘 모르겠습니다.
프레임 버퍼가 완료되었는지 확인 했습니까? – Reaper
@Reaper 예 을 사용하여 검사했습니다. int e = GLES20.glCheckFramebufferStatus (GLES20.GL_FRAMEBUFFER); if (e! = GLES20.GL_FRAMEBUFFER_COMPLETE) { Log.e ("Main", "Framebuffer not complete"); }' – snowrain