This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA2HG:【OpenGL】如何将 FBO 与 NV12配合使用

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/920706/tda2hg-opengl-how-to-use-the-fbo-with-nv12

器件型号:TDA2HG
主题中讨论的其他器件:TDA2

您好:

环境

VisionSDK 3.05

众所周知、visonSDK 上的 OpenGL 仅支持 NV12输入、因此当我们绑定纹理时、必须使用  

光源纹理(1、outTexIndex);
System_eglCheckGlError ("glGenTexts");
printf ("outTexIndex 0x%x \n"、* outTexIndex);

glBindTexture (GL_纹 理_EXTERNAL_OES、* outTexIndex);
System_eglCheckGlError ("glBindTexture");

GlTextParameteri (GL_turete_external_OES、GL_turete_min_filter、GL_linear_linear);
GlTextParameteri (GL_turete_external_OES、GL_turete_mag_filter、GL_linear);
System_eglCheckGlError ("glTexParameteri");

glEGLImageTargetTexture2DOES (GL_Tecture_external_OES、(GLeglImageOES) textImg);
System_eglCheckGlError ("glEGLImageTargetTexture2DOES");

如果我们要使用 FBO (framebufferobject)、例如:

glBindTexture (GL_t纹 理_2D、m_stage_t纹 理[i]);
#if global_run_env_Desktop = 0 &&定义的 APP_RUN_ON_IMX6
//将 addr 映射到 OpenGL viv
(* g_pFnglTexDirectVIVMap)(gL_turate_2D、宽度、高度、fbo_format、
(void **)&(m_stage_FBO_vaddr[i])、(const GLuint *)(&m_stage_FBO_paddr[i]));
#else
glTextImage2D (GL_t纹 理_2D、0、FBO_format、宽度、高度、
0、FBO_format、GL_unsigned_byte、NULL);
#endif
GlTextParameteri (GL_turete_2D、GL_turete_mag_filter、GL_linear);
GlTextParameteri (GL_turete_2D、GL_turete_min_filter、GL_linear);

//绑定渲染缓冲区并创建16位深度缓冲区
//渲染缓冲区的宽度和高度=的宽度和高度
//纹理
glBindRenderbuffer (GL_RENDERBUFFER、m_STACE_DEPTY_REBUFF_BUFFER[i]);
glRenderBufferStorage (GL_RENDERBUFFER、GL_DEPTY_COMPONENT16、宽度、高度);

//绑定帧缓冲区
glBindFramebuffer (gL_framebuffer、m_stage_FBO[i]);
//将纹理指定为颜色附件
glFramebufferTexture2D (GL_framebuffer、GL_color_ATTACHMENT0、GL_tuture_2D、m_stage_tuture[i]、0);
eglCheckGlError ("glFramebufferTexture2D");
printf ("Andy debug test glFramebufferTexture2D \n");
//将 depthe_rendbufer 指定为深度附加
glFramebufferRenderbuffer (gL_framebuffer、gL_depth_attachment、gL_RENDERBUFFER、m_stage_delime_render_buffer[i]);
//检查帧缓冲完成
GLenum status = glCheckFramebufferStatus (gL_framebuffer); 

对于上述代码、我们如何将 FBO 与 NV12配合使用?

根据前面讨论的内容、FBO 仅支持 RGB、这意味着我们无法将 FBO 与 NV12配合使用?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您能描述一下您的用例吗? 您是否正在尝试读取 NV12并写入 RGB FBO? 或者您是否正在尝试将 YUV 输出写入 FBO? 读取 YUV 纹理和写入 RGB 帧缓冲器应该可以正常工作。 为了供参考、我将附加一个带有 EGL 和 OpenGLES 扩展名的文本文件、我们的 support.e2e.ti.com/.../sgx_5F00_extensions.txt

    此致

    Hemant

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您能描述一下您的用例吗? 您是否正在尝试读取 NV12并写入 RGB FBO? 或者您是否正在尝试将 YUV 输出写入 FBO? 读取 YUV 纹理和写入 RGB 帧缓冲器应该可以正常工作。 为了供参考、我将附加一个带有 EGL 和 OpenGLES 扩展名的文本文件、我们的 support.e2e.ti.com/.../7268.sgx_5F00_extensions.txt

    此致

    Hemant

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Hemant:

     请参阅案例流程:

      

    1. visionsdk OpenGL 是否支持将 RGB 作为纹理? 使用 samplerExternalOES 加载 NV12的所有 glsl
    2. 对于 FBO、如前一篇文章所述、FBO 仅支持 RGB、如果支持、如何使用 NV12 texutie 一起呈现 RGB
    3. FBO 是否支持 NV12?

    最重要的是、FBO 输入应为 NV12、FBO 输出哪种格式? RGB 或 NV12。 您能否共享一些示例代码来演示这一点?

    谢谢。。。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    支持 RGB 和 YUV 纹理。

    FBO 支持 RGB、GPU 将 YUV 转换为 RGB。

    在 TDA2上、FBO 必须为 RGB。 您的用例是否需要 YUV 输出?

    此致

    Hemant

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Hemant:

    [引用用户="Hemant Hariyani]TDA2、FBO 必须为 RGB。 您的用例是否需要 YUV 输出?[/报价]

    它似乎使用了 YUV、因为其他纹理是 YUV、我们不知道 tda2支持是否使用 RGB 和 YUV 混合  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您可以读取 YUV 纹理并输出到 RGB FBO。 您可以使用 EXT_IMAGE_DMA_buf_import 创建 NV12 EGL 映像、然后使用 GL_Oes_EGL_IMAGE_EXTERNAL 将映像读取为纹理。 您的 FBO 可以继续为 RGB 格式。

    此致

    Hemant

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Hemant:

     根据上面的讨论、我们似乎需要将 FBO 与 YUV 配合使用、而不是 RGB、您能否分享如何将 FBO 与 YUV 纹理配合使用?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Hemant:

    但 RGB FBO 应与 YUV 纹理一起呈现、因为它是整个渲染的一部分、如卡模型、相机图像。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这可以通过 以下网址解决:https://e2e.ti.com/support/processors/f/791/t/931272

    将其标记为已关闭。