Windows 8 Directx 开发学习笔记(十四)使用几何着色器实现三角形细分

本文介绍了如何在Windows 8 DirectX 11中使用几何着色器对三角形进行细分,以提升模型细节。通过修改着色器模型并调整几何着色器代码,实现了将三角形细分成四个小三角形,从而增加顶点数。在C++代码中添加和配置几何着色器后,展示了细分前后的对比效果。
摘要由CSDN通过智能技术生成

几何着色器是从DirectX 10才引入的着色器,是一个可选阶段,位于顶点着色器和像素着色器阶段之间。顶点着色器以顶点作为输入数据,而几何着色器以完整的图元作为输入数据,像点、直线、三角形等。之所以引进几何着色器是为了充分利用GPU的计算能力来生成几何结构和模型细节,减轻CPU的负担,让CPU更专注于逻辑控制。几何着色器的编程和其它着色器类似,在VS2012中默认生成的几何着色器代码如下:

struct GSOutput
{
    float4 pos : SV_POSITION;
};
 
[maxvertexcount(3)]
void main(
    triangle float4 input[3] :SV_POSITION,
    inout TriangleStream<GSOutput > output
)
{
    for (uint i = 0; i < 3;i++)
    {
       GSOutputelement;
       element.pos =input[i];
       output.Append(element);
    }
}

这部分代码没有对顶点进行任何处理,主要注意下几何着色器与其它着色器不同的地方:maxvertexcount用来说明几何着色器所能输出顶点的最大数量,因为几何着色器每次输出的顶点数目可以不同。而triangle则说明输入是一个三角形图元,input[3]表明每次读入三角形的三个顶点。TriangleStream说明输出是一个流类型的对象,它是一个描述三角形的顶点列表,在main方法中构造好一个顶点后,使用Append方法将其加入列表。关于几何着色器更详细的介绍当然还得参考书籍和MSDN,接下来就实现一个用几何着色器对三角形进行细分的效果。


可以看出,把一个三角形细分成四个三角形,总的顶点数增加一倍。(写到这里突然想到游戏中常用的材质细节选项,不知道是不是通过设置不同的细分参数来区别。)知道基本方法后就可以进行代码的编写。这次是对第十二篇实现的模型进行细分

  • 31
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值