Index: webrtc/sdk/android/api/org/webrtc/GlTextureFrameBuffer.java |
diff --git a/webrtc/sdk/android/api/org/webrtc/GlTextureFrameBuffer.java b/webrtc/sdk/android/api/org/webrtc/GlTextureFrameBuffer.java |
index 7e65acefdc0d4046f3c3d194d5370f163374fa07..164dff29cb1bf6f28e94b909bddbbdf8f902ab22 100644 |
--- a/webrtc/sdk/android/api/org/webrtc/GlTextureFrameBuffer.java |
+++ b/webrtc/sdk/android/api/org/webrtc/GlTextureFrameBuffer.java |
@@ -40,24 +40,15 @@ public class GlTextureFrameBuffer { |
throw new IllegalArgumentException("Invalid pixel format: " + pixelFormat); |
} |
+ // Create texture. |
textureId = GlUtil.generateTexture(GLES20.GL_TEXTURE_2D); |
this.width = 0; |
this.height = 0; |
- // Create framebuffer object and bind it. |
+ // Create framebuffer object. |
final int frameBuffers[] = new int[1]; |
GLES20.glGenFramebuffers(1, frameBuffers, 0); |
frameBufferId = frameBuffers[0]; |
- GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, frameBufferId); |
- GlUtil.checkNoGLES2Error("Generate framebuffer"); |
- |
- // Attach the texture to the framebuffer as color attachment. |
- GLES20.glFramebufferTexture2D( |
- GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, textureId, 0); |
- GlUtil.checkNoGLES2Error("Attach texture to framebuffer"); |
- |
- // Restore normal framebuffer. |
- GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0); |
} |
/** |
@@ -82,6 +73,19 @@ public class GlTextureFrameBuffer { |
GLES20.GL_UNSIGNED_BYTE, null); |
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); |
GlUtil.checkNoGLES2Error("GlTextureFrameBuffer setSize"); |
+ |
+ // Attach the texture to the framebuffer as color attachment. |
+ GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, frameBufferId); |
+ GLES20.glFramebufferTexture2D( |
+ GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, textureId, 0); |
+ |
+ // Check that the framebuffer is in a good state. |
+ final int status = GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER); |
+ if (status != GLES20.GL_FRAMEBUFFER_COMPLETE) { |
+ throw new IllegalStateException("Framebuffer not complete, status: " + status); |
+ } |
+ |
+ GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0); |
} |
public int getWidth() { |