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/AM5728:QT 5.7 OpenGL 问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/655561/linux-am5728-qt-5-7-opengl-issue

器件型号:AM5728

工具/软件:Linux

尊敬的团队:  

我   在04.01.00.06中运行 QML 预编译用例。

/usr/share/qt5/examples/quick/touchinteraction/touchinteraction  

当我单击此案例的第二项 Bear-whack 时、我收到下面的错误消息。

 桌面上的触摸图标是相同的应用程序,也会出现崩溃。

我不知道如何处理它。

--------------------------------------------------------------------

根目录@am57xx-EVM:~#/usr/share/qt5/examples/quick/touchinteraction/touchinteraction
使用 Wayland-EGL
wlpvr:已初始化 PVR 服务
libpng 警告:ICCP:已知错误的 sRGB 配置文件
libpng 警告:ICCP:配置文件'ICC 配置文件':1000000h:无效的渲染意图
QOpenGLShader::编译(顶点):编译失败。

*** Vertex 着色器源代码***有问题
第1行
#define 颜色
#define 变形
#define 表
#define sprite

#if 已定义(变形)
属性 highp vec4 vPosTex;
其他
属性 highp vec2 vpos;
#endif

属性 highp vec4 vData;// x =时间、y =寿命、z =大小、w = endSize
属性 highp vec4 vVec; // x、y =恒定速度、 z、w =加速度
统一高位浮子入口;

#if defined (颜色)
属性 highp vec4 vColor;
#endif

#if 已定义(变形)
属性 highp vec4 vDeformVec;// x、y x unit vector;z、w = y unit vector
属性 highp vec3 vRotation; // x =旋转弧度、y =旋转速度、z = bool 自动旋转
#endif

#if 已定义(sprite)
属性 highp vec3 vAnimData;// w、h (anim 的预乘)、内插进度
属性 highp vec4 vAnimPos; // x、y、x、y (用于插值的两个帧)
#endif

uniform highp mat4 qt_Matrix;
统一高位浮点时间戳;

#if 已定义(table)
如果是浇道模式、则改变低矢量2 tt;//y 正在进行
uniform highp float sizeable[64];
统一高位浮点运算能力表[64];
#endif

#if 已定义(sprite)
改变 highp vec4 fTexS;
#Elif defined (变形)
改变 highp vec2 fTex;
#endif

#if defined (颜色)
改变 lowp vec4 fColor;
其他
可变低浮点铲;
#endif


void main()

   Highp float t =(时间戳- vData.x)/vData.y;
   如果(t < 0。 || t > 1.) {
#if 已定义(变形)
       gL_Position = qt_Matrix * vec4 (vPosTex.x、vPosTex.y、0..、1.);
其他
       gL_PointSize = 0.;
#endif
   }否则{
#if 已定义(sprite)
       TT.y = vAnimate Data.z;

       //计算纹理中的框架位置
       fTexS.xy = vAnimate Pos.xy + vPosTeex.ZW * vAnimate Data.xy;

       //为了进行插值,还传递下一帧
       fTexS.ZW = vAnimate Pos.ZW + vPosTex.ZW * vAnimate Data.xy;

#Elif defined (变形)
       fTex = vPosTeex.ZW;
#endif
       highp float currentSize = mix (vData.z、vData.w、t * t);
#if defined (Q_OS_BlackBerry)
       高浮点衰减= 1.;
其他
       低浮点衰减= 1.;
#endif
       Highp float fadeIn = min (t * 10.、1.);
       高浮点 fadeout = 1. - CLAMP ((t - 0.75)* 4.,0.,1.);

#if 已定义(table)
       currentSize = currentSize * sizeable[int (floor (t*64.))];
       FADE = FADE *可操作性[int (floor (t*64.))];
#endif

       如果(条目==1。)
           FADE = FADE * FadeIn * FadeOut;
       否则、如果(条目==2.)
           currentSize = currentSize * fadeIn * fadeout;

       if (currentSize <= 0。) {
#if 已定义(变形)
           gL_Position = qt_Matrix * vec4 (vPosTex.x、vPosTex.y、0..、1.);
其他
           gL_PointSize = 0.;
#endif
       }否则{
           if (currentSize < 3.) //尺寸太小,在移动时看起来很抖动
               当前大小= 3.;

           highp vec2 pos;
#if 已定义(变形)
           高浮点旋转= vRotation.x + vRotation.y * t * vData.y;
           if (vRotation.z =1.0){
               highp vec2 curVel = vvvvec.zw * t * vData.y + vVec.xy;
               如果(长度(curVel)>0。)
                   rotation += atan (curVel.y、curVel.x);
           }
           highp vec2 trigCalcs = vec2 (cos (rotation)、sin (rotation));
           highp vec4 deform= vDeformVec * currentSize *(vPosTeex.zzww - 0.5);
           highp vec4 rotatedDeform = deform.xxzz * trigCalcs.xyxy;
           rotatedDeform = rotatedDeform +(deform.yyww * trigCalcs.yxyx * vec4 (-1.,1.,-1.,1.));
           /*可读版本:
           highp vec2 xDeform = vDeformVec.xy * currentSize *(vTex.x-0.5);
           highp vec2 yDeform = vDeformVec.ZW * currentSize *(vTex.y-0.5);
           highp vec2 xRotatedDeform;
           xRotatedDefform.x = trigCalcs.x*xDeform.x - trigCalcs.y*xDeform.y;
           xRotatedDefform.y = trigCalcs.y*xDeform.x + trigCalcs.x*xDeform.y;
           highp vec2 yRotatedDeform;
           yRotatedDefform.x = trigCalcs.x*yDeform.x - trigCalcs.y*yDeform.y;
           yRotatedDefform.y = trigCalcs.y*yDeform.x + trigCalcs.x*yDeform.y;
           *
           POS = vPosTex.xy
                 + rotatedDefform.xy
                 + rotatedDefform.ZW
                 + vVec.xy * t * vData.y        //应用速度
                 + 0.5 * vVec.ZW * pow (t * vData.y、2.);//应用加速度
其他
           POS = VPOS
                 + vVec.xy * t * vData.y        //应用速度矢量。
                 + 0.5 * vVec.ZW * pow (t * vData.y、2.);
           gL_PointSize =当前大小;
#endif
           gL_Position = qt_Matrix * vec4 (pos.x、pos.y、0、1);

#if defined (颜色)
           fColor = vColor * FADE;
其他
           fFade =渐变;
#endif
#if 已定义(table)
           TT.x = t;
#endif
       }
   }

***
QOpenGL着 色器::链接:"链接错误:顶点着色器丢失。\n"
QSGMaterialShader:Shader 编译失败:
"链接错误:顶点着色器丢失。\n"
QOpenGL着 色器::链接:"链接错误:顶点着色器丢失。\n"
QOpenGLShaderProgram::uniforliforLocation( qt_Matrix ):Shader 程序未链接
QSGSSimpleMaterialShader 不在其顶点着色器中实现"均匀的高位 mat4 qt_Matrix;"
已中止(转储内核)
root@am57xx-EVM:~#

--------------------------------------------------------------------

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是 AM57x 平台上的 SGX 驱动程序的已知问题。

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

    感谢您的回复。

    但我稍后将使用 QML 开发应用、如何避免这种情况?

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

    我们正在调查我们何时可以解决该问题。 一旦作出某项决定、我将在这里向您提供最新信息。 您的需求日期是什么?

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

    有一个宏"Q_OS_BlackBerry"需要在 QT5构建时定义。 在 Processor SDK 构建中缺少该错误、导致 Bear -whack 崩溃。

    如果在 Arago 编译中将以下行添加到 meta-qt5/peta-qt/qt5/qtdeclarational_gIT.bb 配方中、并重新编译 SDK、则应用程序应正常运行。
    CXXFLAGS_APPAD_OMAP-a15 ="-DQ_OS_BlackBerry"

    您可以在此处找到使用 Arago Build 构建 SDK 的步骤-
    processors.wiki.ti.com/.../Processor_SDK_Building_The_SDK
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复。 我将尝试这种方法。