Следуя найденным примерам здесь , возникла проблема, когда полупрозрачные элементы всегда рисуются поверх непрозрачных элементов независимо от их порядка в 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
результат

Это происходит, даже если rect2 установлен перед rect1 и независимо от свойства z любого из элементов.
Код OpenGL в C ++ во многом похож на пример Squircle и это на Windows 10 и Qt 5.14.
Просто любопытно, почему это происходит и можно ли это предотвратить или это просто ограничение рисования OpenGL в QML.