diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java index e8cd690b7..298cb028b 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java @@ -161,10 +161,16 @@ public void onPreviewFrame(final byte[] data, final int width, final int height) runOnDraw(new Runnable() { @Override public void run() { + if (imageWidth != width || imageHeight != height) { + glRgbBuffer = null; + glRgbBuffer = IntBuffer.allocate(width * height); + GLES20.glDeleteTextures(1, new int[]{glTextureId}, 0); + glTextureId = NO_IMAGE; + } GPUImageNativeLibrary.YUVtoRBGA(data, width, height, glRgbBuffer.array()); glTextureId = OpenGlUtils.loadTexture(glRgbBuffer, width, height, glTextureId); - if (imageWidth != width) { + if (imageWidth != width || imageHeight != height) { imageWidth = width; imageHeight = height; adjustImageScaling();