我在Qt中通过Canvas3D使用 ESSL (OpenGL ES着色语言)。在我的机器上运行Windows并设置了以下内容:
QGuiApplication::setAttribute(Qt::AA_UseOpenGLES);
<{1>}中的,这意味着GL调用由Qt转换为GL ES调用,由ANGLE转换为Direct3D调用。至少我相信这意味着什么。我使用以下测试QML代码来查看使用的OpenGL版本:
main()
显示&#34; 2.0&#34;。我不确定这是GL API版本还是GL ES API版本。此外,我不确定此GL / GLES版本映射到哪个ESSL版本。我找到了一个映射版本here的表格,但这对我来说不够可靠。与ESSL文档不同,它以无小数点格式列出ESSL版本,例如版本&#34; 330&#34;而不是&#34; 3.3&#34;,而它缺乏例如版本3.00(又名300)the ESSL docs提到。
所以问题是:
如何确定Qt在我的电脑上使用的ESSL版本?
我想使用Text {
text: OpenGLInfo.majorVersion + "." + OpenGLInfo.minorVersion
}
ESSL功能,但我收到以下错误:
textureSize
我的测试着色器看起来像这样:
ERROR: 0:4: 'textureSize' : no matching overloaded function found
ERROR: 0:4: '=' : cannot convert from 'const float' to 'highp 2-component vector of int'
答案 0 :(得分:0)
我找到了一种迂回的方式来做到这一点。在着色器中执行以下操作:
if(__VERSION__ > 150) {
gl_FragColor = vec4(1.0, 0.0. 0.0, 1.0);
}
并使用数字150来查找它何时绘制红色,何时不显示。
但这种方式并不好。
答案 1 :(得分:0)