qt - 为什么没有考虑 QLineWidth?
问题描述
在 Qt3D 中,渲染对象的某些属性不仅仅是简单地设置在渲染器上,而且它们是全局(每个视图)或本地(在渲染对象的材质上)添加到 renderPasses 的——至少我的理解是这样。(我使用的是 PySide2 - 但 C++ 中的代码几乎相同)
例如,当添加几何渲染器并使用其原始类型点 ( Qt3DRender.QGeometryRenderer.Point
) 而不是渲染三角形面时,它会显示几何的点。
这是具有默认类型的示例图。
同样只显示点 ( renderer.setPrimitiveType(Qt3DRender.QGeometryRenderer.Points)
)
很难猜,但是这里的点大小已经改变了——使用下面的代码:
material = Qt3DExtras.QPhongMaterial(e)
for t in material.effect().techniques():
for rp in t.renderPasses():
pointSize = Qt3DRender.QPointSize(rp)
pointSize.setSizeMode(Qt3DRender.QPointSize.SizeMode.Fixed)
pointSize.setValue(5.0)
rp.addRenderState(pointSize)
Lines
根据文档,当使用( LineStrip
) 作为原始类型渲染对象时,可以使用相同的机制来更改线宽。添加
lineWidth = Qt3DRender.QLineWidth(rp)
lineWidth.setValue(5.)
lineWidth.setSmooth(True)
rp.addRenderState(lineWidth)
不改变线宽。
为什么?我需要在哪里添加 QLineWidth?是我选择的忽略 QLineWidth 状态的材料吗?
解决方案
我目前正在与类似的问题作斗争。我试图用 Qt3D 线宽测试重现该行为。使用 CoreProfile 将格式版本设置为 4.6 时,线宽的最大值似乎为 1(或等价于线测试显示的宽度 = 3)。这可能是支持的最大范围。请参阅: https ://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glLineWidth.xhtml
opengl glLineWidth() 不会改变线条的大小
注意:我特意选择了 4.6 版本,因为这是我的环境中支持的 openGL 版本。
推荐阅读
- node.js - 我可以检查我的机器人中的哪些文件给了我错误消息吗?
- python - 执行 python 弹性脚本时出现 503 TransportError
- java - 将新用户输入存储为 Discord 机器人(Java、IntelliJ)的参考
- c# - SQL 字符串大小减少
- jenkins-pipeline - 用于创建带有描述的文件夹的詹金斯管道示例
- java - 如何使用 Spring Boot 返回成功消息?
- algorithm - 寻找作为给定序列的子序列出现的最长弱孪生
- mysql - 如何在 MySQL 的 WHERE 和 ORDER BY 子句中查询索引?
- r - 为什么这个闪亮的应用程序中显示的闪亮反馈错误消息有时不会改变?
- facebook - 如何通过视频获取人口统计数据?