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.

[参考译文] Linux/TDA2PXEVM:QT OpenGL glBindTexture()返回0x502

Guru**** 2555630 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/816583/linux-tda2pxevm-qt-opengl-glbindtexture-return-0x502

器件型号:TDA2PXEVM

工具/软件:Linux

大家好:

背景

 我们现在将环视应用(QT)移植到 tda2px。

 要渲染汽车模型图片,您知道 visionsdk 不支持 glTextImage2D()的 RGBA,  

和以前一样

  1. 将 JPG 转换为 RGB
  2. 将 RGB 转换为 nv12
  3. 使用 eglCreateImageKHR()加载 YUV 数据
  4.  要绑定的 glBindTexture (GL_纹 理_external_OES)

它在使用 sgxFrmCpy 插件的 visionSDK 应用上运行良好。

现在、我们正在处理 QT 环境。

我们像以前一样尝试它、步骤1、2、3是可以的、但是当调用  glBindTexture (GL_tute_external_OES)时、得到0x502错误

glActiveTexture (GL_TEXTURE0);
eglCheckGlError ("glActiveTexture ");
glBindTexture (GL_Texture_external_OES、mater.tertureIdx);
printf ("mater.texureIdx 0x%x \n"、mater.texureIdx);
eglCheckGlError ("glBindTexture");
glUniform1i (m_loc_sampler、0);
glUniform1i (m_loc_has 纹理、1); 

func:set_matery_uniforms line 931 gl:After glBindTexture() glError (0x502)
mater.taptureIdx 0x11171
func:set_matery_uniforms line 931:After glBindTexture() glError (0x502)
mater.texIdx 0x11171
func:set_mater_matery_line 0x171gl:glBindTexture( after glindertureId)之后

如果将 GL_纹 理_external_OES 更改为 GL_纹 理_2D、则没有错误、但没有输出。

 eglCreateImageKHR() 在使用 kmscube 源的 QT 应用程序下单独启动,请检查 attachment.e2e.ti.com/.../8176.kmscube.c

问题

 QT 应用程序中有两个小工具,每个小工具都将调用 initializeOpenGLFunctions(),但共享相同的 EGL 上下文, 并且在另一个上下文下创建 eglCreateImageKHR。  

  1. EGL 是否与 QT OpenGL 有冲突?

感谢您的任何帮助!

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

    您好!

    错误0x502对应 于 GL_INVALID_OPERATION。

    当纹理目标类型绑定时,该错误将从 glBindTexture()返回。

    您可以在结束时检查一下吗?

    谢谢

    RAM

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

    高 RAM:

    [报价用户="Ramprasad"]您能否在结束时检查?

    "结束"是什么意思?

    如果将目标更改为 GL_纹 理_2D、则不会出现错误 、也不会输出任何内容。

    它可以通过任何方法获取有关 GL_INVALID_OPERATION 的详细错误信息?

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

    高 RAM:

     如果在 kmsbone.c 中调用 glBindTexture (GL_tuture_external_OES)、则没关系。

    OpenGL 环境是否不同?

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

    尊敬的 Andy:

    我检查了 SGX-um 的源代码。 当目标纹理的目标与在 glBindTexture()中设置的目标不同时,从 glBindTexture()设置错误0x502 (GL_INVALID_OPERATRATRAT)。

    目前、我无法重现此问题。 是否可以尝试使用 makeCurrent API 再次设置上下文?

    RAM

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

    高 RAM:

      以下是示例代码,第一个 glBindTexture()正常,但第二个代码失败。

    第二个纹理是从另一个上下文中的 kmscube 创建的?

    这一问题是否会有不同的背景?  

      

    printf ("是纹理\n");
    glActiveTexture (GL_TEXTURE0);
    eglCheckGlError ("glActiveTexture ");
    GLUINT 测试;
    格网纹理(1、&测试);
    eglCheckGlError ("glGenTexts");
    glBindTexture (GL_Texture_external_OES、测试);
    printf ("test 0x%x \n"、test);
    eglCheckGlError ("glBindTexture");
    
    glBindTexture (GL_纹 理_external_OES、mater.textureIdx);
    printf ("mater.texureIdx 0x%x \n"、mater.texureIdx);
    eglCheckGlError ("glBindTexture");
    glUniform1i (m_loc_sampler、0);
    glUniform1i (m_loc_has 纹理、1); 

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

    高 RAM:

     我将启动的 kmscube 源放在另一个线程中、然后错误消失、并显示图片...