c++ - 如何在 DirectX 中为像圆柱体这样的 3D 对象实现几何着色器?
问题描述
我需要有关如何在 Cylinder 上实现几何着色器以及 [maxvertexcount()] 的值是什么的帮助,我们是否需要在 ModelClass 中提供顶点和索引的值?
解决方案
Direct3D 的几何着色器阶段并非旨在生成完整的几何体(如圆柱体),也不是真正为 Tessellation 设计的。
https://docs.microsoft.com/en-us/windows/uwp/graphics-concepts/geometry-shader-stage--gs-
您可以进行少量放大,但通常当您跳过 GS 阶段或输出与输入相同数量的顶点时,硬件实现效果最佳。与其他方法相比,即使是 GS 的初始“用例”,例如从单个输入点生成点精灵(四边形),也已被证明是相当低效的。
GS 的主要价值是处理邻接信息,或者进行基于人脸的计算,例如在不复制顶点的情况下实现经典的“平面着色”。几何着色器在进行非真实感渲染时非常有用。GS 阶段还可以使用 Stream Out 执行一些有趣的技巧,并控制管道中的多渲染目标选择。
https://npr-art.blogspot.com/2009/07/geometry-shader-silhouettes.html
如果要生成圆柱体,最好的选择是在 CPU 上构建它。请参阅DirectX 工具包GeometricPrimitive
。
推荐阅读
- python - 什么是 Pyomo 错误代码:0?它发生在我运行的每个示例中,我无法解决它
- python - 具有 0 步或更多步的数据集的步检测
- naudio - 如何关闭或重置 ASIO 驱动程序
- flutter - 当数据具有相同类别时如何从波纹管列表中删除数据,因此gridview没有重复的类别名称
- javascript - 如何在 ExpressJS 中一起渲染和重定向
- c# - 有没有办法使用服务器不支持的密码套件进行连接?
- python - 将多行传递给python脚本中的程序
- react-native - 从嵌套在 Stack Navigator 中的 Tab Navigator 导航
- javascript - react redux 中间件无法访问 utils 中定义的变量
- javascript - 确定相邻重复数组元素的索引