我只是用QML創建QT3D場面開始。 我想濾除我的場景元素使用的是RenderPassFilter渲染。 這是我非常簡單的渲染:QT3D QML RenderPassFilter有幾個關鍵似乎竊聽
import Qt3D.Core 2.0
import Qt3D.Render 2.0
Viewport {
id: root
property color clearColor: Qt.rgba(0, 0, 0.2, 1)
property Camera mainCamera
RenderSurfaceSelector {
id: surfaceSelector
// Clear Buffer
ClearBuffers {
buffers: ClearBuffers.ColorDepthBuffer
clearColor: root.clearColor
NoDraw {}
}
RenderPassFilter {
matchAny: [FilterKey{name: "type"; value: "filter1"}] // <-- THIS LINE IS THE FILTER
CameraSelector {
id: selector
camera: mainCamera
}
}
}
}
這可以正確地顯示所有元素(只有那些),其中包含一個FilterKey{name: "type"; value: "filter1"}
與其他過濾器更換這工作得很好:
RenderPassFilter {
matchAny: [FilterKey{name: "type"; value: "filter2"}] // <-- THIS LINE IS THE FILTER
CameraSelector {
id: selector
camera: mainCamera
}
}
會與過濾器值顯示設定對象的filter2
代替filter1
現在我的問題是,matchAny場是一個列表,所以我會excpect它能夠把幾個元素。不幸的是,以下完全不
RenderPassFilter {
matchAny: [FilterKey{name: "type"; value: "filter1"}, FilterKey{name: "type"; value: "filter2"}] // <-- THIS LINE IS THE FILTER
CameraSelector {
id: selector
camera: mainCamera
}
}
顯示任何元素我希望它可以使所有元素與任一值filter1
或價值filter2
。達到這個目標的方法是什麼?
編輯:,同時張貼這是matchAny
可能意味着什麼,我雖然對我才意識到:在對要素的任何過濾器鑰匙必須匹配什麼的int matchAny名單(但所有的列表必須匹配)。 ..如果這是有道理的。無論如何,問題是:如何使用一個RenderPassFilter允許所有包含filter1
或filter2
元素?