[英]Qt/QML/OpenGL: Z-ordering doesn't work with semi-transparent items with OpenGL under QML
一直在關注此處找到的示例,但遇到了一個問題,即無論半透明項目在 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 屬性如何,也會發生這種情況。
C++ 中的 OpenGL 代碼與 Squircle 示例非常相似,這是在 Windows 10 和 Qt 5.14 上。
只是好奇為什么會發生這種情況,是否可以防止,或者只是在 QML 下繪制 OpenGL 的限制。
看看 QOpenGLFrameBuffer。
https://doc.qt.io/qt-5/qopenglframebufferobject.html
它允許對基於 opengl 的項目在 QML 場景圖中的位置與您正在使用的技術進行細粒度控制,我相信這允許在渲染其余 QML 場景圖項目之前或之后渲染自定義 opengl 項目。
有一個示例項目位於:qt\\Examples\\$QTVERSION\\quick\\scenegraph\\textureinsgnode
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.