android - 加载均匀矩阵 1104 GL_Invalid_Operation Android OpenGLES 2.0

标签 android opengl-es opengl-es-2.0 render-to-texture

我正在致力于在 Android 4.3+ (OpenGLES 2.0) 上实现纹理渲染

我的 DrawFrame() 方法中出现以下错误:

01-15 13:40:07.545: W/Adreno-ES20(23709): <__load_uniform_matrix:1104>: GL_INVALID_OPERATION
01-15 13:40:07.545: E/com.hpp.STextureRender(23709): glDrawArrays: glError 1282
01-15 13:40:07.545: D/io.hpp.CaptureManager(23709): Error encountered in drawFrame = glDrawArrays: glError 1282
01-15 13:40:07.545: W/System.err(23709): java.lang.RuntimeException: glDrawArrays: glError 1282
01-15 13:40:07.545: W/System.err(23709):    at com.hpp.openGL.STextureRender.checkGlError(STextureRender.java:524)
01-15 13:40:07.545: W/System.err(23709):    at com.hpp.openGL.STextureRender.drawFrame(STextureRender.java:316)
01-15 13:40:07.545: W/System.err(23709):    at com.harmonicprocesses.penelopefree.openGL.MyGLRenderer.drawFrame(MyGLRenderer.java:286)
01-15 13:40:07.545: W/System.err(23709):    at com.harmonicprocesses.penelopefree.camera.CaptureManager.drawFrame(CaptureManager.java:446)
01-15 13:40:07.545: W/System.err(23709):    at com.harmonicprocesses.penelopefree.camera.CaptureManager.access$7(CaptureManager.java:444)
01-15 13:40:07.555: W/System.err(23709):    at com.harmonicprocesses.penelopefree.camera.CaptureManager$6.run(CaptureManager.java:278)
01-15 13:40:07.555: W/System.err(23709):    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1463)
01-15 13:40:07.555: W/System.err(23709):    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

问题是否源于设置 EGL14.eglChooseConfig(mEGLDisplay, configsAttribs, 0, configs, 0, configs.length, numConfigs, 0);

private int[] version, configsAttribs = {
        EGL14.EGL_RED_SIZE, 8,
        EGL14.EGL_GREEN_SIZE, 8,
        EGL14.EGL_BLUE_SIZE, 8,
        EGL14.EGL_RENDERABLE_TYPE, EGL14.EGL_OPENGL_ES2_BIT,
        EGL_RECORDABLE_ANDROID, 1,
        EGL14.EGL_NONE

但使用以下纹理连接到 FBO

    // generate the textures
    GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, rain.width, rain.height, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_SHORT_4_4_4_4, juliaTexBuff);

注意到 EGL 中 RGBA4444 与 RGBA8888 的差异了吗?

最佳答案

问题出在调用 glUseProgram 之前加载统一变量期间。如果我将调用放在包含 glGetUniform4fv() 的 block 之后,它显然会失败,因为它不知道制服在哪里,因为程序已加载。

关于android - 加载均匀矩阵 1104 GL_Invalid_Operation Android OpenGLES 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21149605/

相关文章:

iphone - 有关如何实现平滑绘画笔触(如 Penultimate 应用程序中所示)的示例代码

ios - 调用 glDrawArrays 时随机崩溃

opengl-es - 处理 OpenGL ES 2.0 驱动程序错误

android - 如果未登录 Google Play 帐户,为什么 MapView 会返回 null?

iphone - 如何通过示例学习 OpenGL,例如,构建一个旋转的地球仪?

安卓 OpenGL : GLbyte LoadShader conversion

ios - iOS 上的 OpenGL ES 2.0 对象拾取

android - 触摸设备(iOS、Android)

android - Horizo​​ntalScrollView 中的 TableLayout

java - Aapt错误Android Studio