Windows 8 Directx 开发学习笔记(十四)使用几何着色器实现三角形细分
几何着色器是从DirectX 10才引入的着色器,是一个可选阶段,位于顶点着色器和像素着色器阶段之间。顶点着色器以顶点作为输入数据,而几何着色器以完整的图元作为输入数据,像点、直线、三角形等。之所以引进几何着色器是为了充分利用GPU的计算能力来生成几何结构和模型细节,减轻CPU的负担,让CPU更专注于逻辑控制。几何着色器的编程和其它着色器类似,在VS2012中默认生成的几何着色器代码如下:
可以看出,把一个三角形细分成四个三角形,总的顶点数增加一倍。(写到这里突然想到游戏中常用的材质细节选项,不知道是不是通过设置不同的细分参数来区别。)知道基本方法后就可以进行代码的编写。这次是对第十二篇实现的模型进行细分。
首先向项目中添加几何着色器,并重命名为SimpleGeometryShader。注意这里需要更改编译选项,之前的着色器模型是 4级别 9_3 (/4_0_level_9_3),而几何着色器是在DirectX 10中才引入的,所以要更改着色器模型为4 (/4_0)。
然后要修改几何着色器中的结构体定义,与顶点着色器对应:
上面是细分后的效果,下面是未细分的效果。
本篇文章源代码:Direct3DApp_HillWaveGS
原文地址:http://blog.csdn.net/raymondcode/article/details/8503985