OpenGL上下文因类初始化而中断

时间:2018-07-26 15:18:30

标签: android opengl-es opengl-es-2.0 gpuimage

我已经成功设置了OpenGL上下文,并且可以在屏幕上绘制纹理,但是一旦初始化CGEFrameRenderer(来自gpu-image-library-仅实例化并调用init),就无法在屏幕上渲染其他任何内容。知道我可能会缺少什么吗?

EGL14.eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext);

if (frameRenderer == null) {
    frameRenderer = new CGEFrameRenderer();
    frameRenderer.init(width, height, width, height);
}

我要做的是使用此frameRenderer在多个纹理上应用滤镜,然后使用结果在屏幕上绘制多个图像。我弄清楚了第二部分,所有内容都可以很好地渲染,但是一旦初始化了frameRenderer,就无法在屏幕上渲染其他任何内容。

在渲染之前,请确保使用相同的eglContext(已编译的着色器程序),重置视口并绑定默认的帧缓冲区。

EGLContext currentContext = EGL14.eglGetCurrentContext();
if (currentContext.equals(eglContext)) {
    EGL14.eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext);
}

GLES20.glUseProgram(shaderProgram);
GLES20.glViewport(0, 0, w.width, w.height);
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);

每帧清除每个帧深度和颜色缓冲区。

编辑:从我收集到的信息来看,我过去通过动态发送顶点,纹理坐标以及库在屏幕上进行渲染的方式在on scree quad上渲染的方式似乎存在问题通过设置STATIC_DRAW vertexBuffer,我也动态查询了属性位置,并且我注意到该库将顶点属性位置设置为0(我想这是很常见的做法)。从那时起,我过渡到仅使用库类进行渲染,问题不再存在

0 个答案:

没有答案