我一直在跟随此处找到的示例,并且遇到了这样的问题:无论QML中的顺序如何或设置z属性如何,半透明项总是绘制在不透明项之上。
如果没有OpenGL项,则一切都按预期工作。
import QtQuick 2.14
import TestScene 1.0
Item {
width: 160
height: 120
/*
TestScene {
// draw checkered pattern in OpenGL
}
*/
Rectangle {
id: rect1
x: 32
y: 32
width: 32
height: 32
color: Qt.rgba(1, 0, 0, 0.5)
}
Rectangle {
id: rect2
x: 32+16
y: 32+16
width: 32
height: 32
color: Qt.rgba(0, 0, 1, 1)
}
}
期望的结果
当取消注释TestScene项目时
结果
即使在设置rect1之前设置rect2,无论任何项目的z属性如何,这种情况都会发生。
C ++中的OpenGL代码几乎与Squircle示例相同,并且在Windows 10和Qt 5.14上运行。
只是好奇为什么会发生这种情况,是否可以防止或者这只是在QML下绘制OpenGL的限制。