我已经用openGL ES 3.0编写了将YUV转换为RGB的代码。我希望将转换后的图像存储在位图内存中,而不是将其显示为glViewPort表面。我使用了openGL帧缓冲区和渲染缓冲区(渲染到纹理),然后尝试使用glReadpixels()函数获得输出。我得到了输出,但我不知道如何将输出上传到位图内存中。请帮帮忙。
我能否将2000 x 2000纹理绑定到FBO中的颜色附件中,并告诉OpenGL的行为就像纹理更小,比如1000x1000?关键是,在我的渲染周期中,我需要许多(大部分是小的)中间纹理来渲染,但我一次只需要一个。我认为,与其创建许多较小的纹理,我将只有一个适当的大,我将把它绑定到一个FBO在手边,告诉OpenGL只渲染到它的一部分,并节省内存。
或者也许我应该破坏/重建这些纹理多次每帧?这当然会节省更多的<
我正在尝试解码和渲染超高分辨率视频(4k X 4k),视频是用h.264编解码器编码的。在解码视频帧时,我们想要在着色器上渲染帧,目前正在使用glsl在opengl管道中,这样我们就可以动态地操作片段颜色。我们已经使用FFmpeg解码API进行了测试,但瓶颈在于以下gl函数调用的软件解码时间和数据传输:我们已经考虑过使用DirectShow在GPU上利用硬件加速来解码视频帧,并使用NV_DX_interop2将GL的纹理槽映
虽然解码现在运行良好,但我们正在努力将解码后的视频帧的内容映射到GLES2进行渲染。该接口允许在配置时传递一个ANativeWindow,但我们希望控制视频渲染的调度,最终只提供N个填充了解码帧数据的纹理。将getOutputBuffer()返回的内存映射到GLES vie eglCreateImageKHR/外部映像的所有尝试均失败。有没有办法让gralloc句柄/GraphicsBuffer将帧绑定到EGL