Qt 3D 官方实例3 wireframe
来源:http://www.tudoupe.com时间:2022-03-05
文章目录
- Wireframe 效果
- 代码阅读
- 代码结构
- 二、涉及组件学习
- FirstPersonCameraController
- Material
- Effect
- Technique
- RenderPass
- Parameter
- 三、总结
Wireframe 效果
该程序,实现了一种单通道线框渲染方法,用自己的着色器来实现渲染。
代码阅读
代码结构
main.qml
WireframeMaterial.qml//
WireframeEffect.qml
TrefoilKnot.qml
BasicCamera.qml
二、涉及组件学习
FirstPersonCameraController
允许从第一人称视角控制场景摄影机。
Properties
acceleration: real
camera: Camera
deceleration: real
linearSpeed: real
lookSpeed: real
控制:
| 输入 | 行为 |
|---|---|
| 鼠标左键 | 按下鼠标左键时,鼠标沿x轴移动会平移相机,沿y轴移动会使相机倾斜。 |
| Shift 键 | 按下时激活精细运动控制。使鼠标的平移和倾斜不那么敏感。 |
| 方向键 | 相对于“摄影机”视口水平移动摄影机 |
| 上下翻页键 | 相对于摄影机视口垂直移动摄影机。 |
Material
Material提供了一种实体渲染的方法。任何aspect都可以定义自己的Material子类型,以便Material可以用来描述视觉元素;例如,声音在元素上的反射方式、表面温度等等。
Material本身没有任何作用。只有在引用Effect 节点时,Material才会变得有用。
在实践中,一个Effect经常被多个材质组件引用。这样只创建一次effect、techniques、passes和shaders,可以同时被多个实例指定材质。
Material上定义的参数将被TechniqueFilter或RenderPassFilter中定义的参数(同名)覆盖。
Properties
effect:Effect
parameters: list //参数列表
Effect
Effect 结合了使用的一组techniques 和parameters ,以生成材质的渲染效果。
如果可能,效果实例应在多个Material实例之间共享。
Effect上定义的参数由材Material、TechniqueFilter、RenderPassFilter中定义的QParameter(同名)覆盖。
注意:不能禁用Effect。
Properties
parameters: list
techniques: list
Technique
Technique指定一组RenderPass对象、FilterKey对象、Parameter对象和GraphicsAPI过滤器,它们共同定义了渲染用那种opengl 技术。因为OpenGL有多个版本,分OpenGL和OpenGL ES,还分core profile和compatibility profile,这样使得种种技术变得十分繁杂。所以Qt 3D提出了Technique这个概念。通过指定api、profile以及majorVersion和minorVersion版本,来使用我们需要的OpenGL API。
TechniqueFilter使用过滤键在帧图的特定部分选择特定Technique。如果在Technique和RenderPass中指定了两个同名的参数实例,则Technique中的参数实例将覆盖RenderPass中使用的参数实例。
当opengl存在多个版本时,创建多个Technique节点非常有用,每个节点都设置了GraphicsAPI过滤器,以匹配其中一个目标版本。在运行时,Qt3D渲染器将根据支持的图形API版本和(如果指定)满足帧图中给定TechniqueFilter的FilterKey节点选择最合适的技术。
注意:当使用OpenGL作为图形API进行渲染时,Qt3D依赖运行时QSurfaceFormat::defaultFormat()返回的QSurfaceFormat来决定可用的最合适的GL版本。如果需要自定义QSurfaceFormat,请不要忘记使用QSurfaceFormat::setDefaultFormat()。在视图上设置QSurfaceFormat可能对Qt3D相关渲染没有影响。
Properties
filterKeys: list
graphicsApiFilter: GraphicsApiFilter
parameters: list
renderPasses: list
RenderPass
RenderPass指定该Technique使用的单个渲染过程(着色器程序执行的实例)。渲染过程由一个着色器程序和一个FilterKey对象列表、一个RenderState对象列表和一个Parameter对象列表组成。
Properties
filterKeys: list
parameters: list
renderStates: list
shaderProgram: ShaderProgram
Parameter
Parameter可以由RenderPass、Technique、Effect、Material、TechniqueFilter、RenderPassFilter引用。在运行时,根据为渲染的给定步骤选择的着色器,如果着色器包含名称与参数名称匹配的uniform ,则参数中包含的值将被引用。
三、总结
该demo,trefoilKnot(Entity)从模型中加载,然后自定实现Material渲染Entity。QMl 实现了与 顶点着色器、片段着色器,几何着色器的交互。本章需要深度理解。
相关新闻
- 2023-05-06 微pe怎么初始化U盘(微pe怎么恢复初
- 2023-05-06 Xp系统boot 进入pe(boot manager 怎么进入
- 2023-05-06 win pe修复bcdboot(pe修复系统)
- 2023-05-06 win7更新失败 pe(win7更新失败还原更
- 2023-05-06 u盘装了pe读取不了(u盘能进pe读取不
- 2023-05-06 u盘pe 发热(u盘发热烫手)
- 2023-05-06 u盘pe下看不到硬盘(u盘启动pe看不到
- 2023-05-06 pe盘 ntfs(u盘ntfs格式)
- 2023-05-06 sony笔记本进入pe模式(联想笔记本怎
- 2023-05-06 pe启动盘进不去(pe启动盘进不去系统
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
