我使用此代码对图片生效 http://grishma102.blogspot.com/2013/10/apply-effects-on-image-using-effects.html
但我的问题是,如果我选择这些尺寸的图像,例如(宽度4128)和(高度2322) 它给了我这个错误信息
FATAL EXCEPTION: GLThread 21709 java.lang.RuntimeException: glUseProgram: glError 1281
at com.mekdev.imageaffects.GLToolbox.checkGlError(GLToolbox.java:62)
at com.mekdev.imageaffects.TextureRender.renderTexture(TextureRender.java:95)
at com.mekdev.imageaffects.EffectsFilterActivity.renderResult(EffectsFilterActivity.java:566)
at com.mekdev.imageaffects.EffectsFilterActivity.onDrawFrame(EffectsFilterActivity.java:584)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1531)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
请有人帮忙吗?
答案 0 :(得分:0)
纹理加载后你应该刷新glError。在大量移动GPU上,最大纹理大小为2048x2048。有时你只需要使用边长为2(1024,2048,...)的纹理。因此在纹理加载和LogCat之后检查glError(在某些设备上很容易看到LogCat中的GL出错了)。并绘制如此大的图像使用几个小纹理。
答案 1 :(得分:0)
听起来你超过了设备的最大纹理尺寸。大多数移动设备的最大值为2048或4096。
您可以在设备上使用以下内容进行查询:
int[] values = new int[1];
GLES20.glGetIntegerv(GLES20.GL_MAX_TEXTURE_SIZE, values, 0);
// max is in values[0]
您的纹理不能大于最大值,因此您需要将其缩放以适合,或将其拆分为多个纹理。