0

我想设置QCullFaceFrontAndBack这就是我写这个的原因:

from PySide2.Qt3DRender import Qt3DRender

cull_face = Qt3DRender.QCullFace()
cull_face.setMode(Qt3DRender.QCullFace.FrontAndBack)
render_pass = Qt3DRender.QRenderPass()
render_pass.addRenderState(cull_face)

上面的代码应该全局设置CullFace。但事实并非如此。我做错了什么?

4

1 回答 1

1

我假设 python 绑定不会改变 Qt 在 C++ 中的工作方式。

所以你可能有一个Qt3DWindow地方(除非你渲染到屏幕外或你自己的表面)。如果您希望您的剔除面处于活动状态,您必须QRenderSettings通过调用从窗口中检索renderSettings()。渲染设置保存活动帧图,即如果您希望任何渲染状态或与帧图相关的任何其他内容处于活动状态,它必须是渲染设置作为活动帧图保存的节点的子节点。activeFramegraph()您可以通过调用或来获取和设置渲染设置上的活动帧图setActiveFramegraph(QFramegraphNode*)

你有使用的理由QRenderPass吗?因为如果是,您必须创建一个QRenderPassFilter, 以便将其设置为渲染设置上的活动框架图(QRenderPass不继承QFramegraphNode)。通过这种方式,您可以从渲染过程中过滤掉某些对象。

但是由于您希望剔除面在全球范围内处于活动状态,我建议您使用 aQRenderStateSet并在QCullFace此处添加。然后,您可以在 3D 窗口的渲染设置上将渲染状态集设置为活动帧图。

于 2018-04-24T08:32:57.210 回答