繁体   English   中英

如何在 DirectX 中为 3D object 之类的 Cylinder 实现几何着色器?

[英]How to implement Geometry Shader in DirectX for a 3D object like Cylinder?

我需要有关如何在圆柱体上实现几何着色器以及 [maxvertexcount()] 的值是什么的帮助,我们是否需要在 ModelClass 中提供顶点和索引的值?

Direct3D 的几何着色器阶段不是为了生成像圆柱体这样的完整几何体,它也不是真正为曲面细分设计的。

https://learn.microsoft.com/en-us/windows/uwp/graphics-concepts/geometry-shader-stage--gs-

您可以做一些少量的放大,但通常当您跳过 GS 阶段或 output 与输入相同数量的顶点时,硬件实现效果最佳。 与其他方法相比,即使是 GS 的初始“用例”,例如从单个输入点生成点精灵(四边形),也已被证明效率相当低。

GS 的主要价值是处理邻接信息,或进行基于面的计算,例如在不复制顶点的情况下实现经典的“平面着色”。 几何着色器在进行非真实感渲染时非常有用。 GS 阶段还可以使用 Stream Out 和控制管道中的多渲染目标选择来做一些有趣的技巧。

https://npr-art.blogspot.com/2009/07/geometry-shader-silhouettes.html

如果要生成 Cylinder,最好的选择是在 CPU 上构建它。 请参阅DirectX 工具包中的GeometricPrimitive

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM