关于上一个程序的一点解释
下面来解释一下基本的语法
首先说一下为什么保存为.txt的文件,而不定义一个特别的文件类型,这个其实shader程序来directx程序
里头就像是一个很长的字符串,是在没有必要定义一个文件类型...不过这样就貌似没有特别的IDE环境
哭.....
首先是定义了一个全局变量,类型为vector,就是一个四元向量(注意,hlsl里头把向量和矩阵当作原始类
型数据,也就是说,对向量的操作和对一个数的操作一样高效,这是图形处理的特殊性决定的),用这个向量来表示一个颜色。全局变量不需要后面说的类似:POSITION的标识符定义语义,原因就是全局变量不是在顶点程序里头初始化,而是通过我们上面看到的consttable初始化的
接着,我们定义了两个结构,分别是输入和输出结构,表示的就是顶点程序的输入和输出结构由”struct“关键字定义,和C语言和C++一样,具体的说我们定义的是一个顶点结构,是的,在顶点程序里头自然要定义顶点结构。接着是vertor position : POSITION这句里头的”:POSITION“这是一个语义(semantics),用来告诉程序这个变量是做什么的,不如这个表示的是位置信息,而后面的:COLOR表示的是散色光信息,而:TEXCOORD表示的就是纹理信息,这些等用到的时候再介绍。语义有定义好的许多,在高级程序里头,还可以自己定义语义语法实际是和底层的寄存器有关的,不过不知道也不影响使用,想知道,百度咯.....
下面是一个主函数,HLSL里头叫做入口函数,相当于C中的main函数。HLSL里头和C不同,没有确定的入口函数所以需要自己指定(也就是函数名可以任意,只要合法),这也带来了相当大的灵活性。函数的定义和C非常类似,一个返回类型,这里我们返回输出结构VS_OUTPUT,也可以是VOID,不过要有特别的语法来返回点什么,毕竟如果不返回你的顶点程序干嘛来着,关于这点,等下补充。然后是函数名,然后是参数列表。接下来做的事情就很明显了吧,申明一个输出结构,然后为每项分别赋值,然后是返回这个结构 。完了....*/
向上面这样,就可以去掉输入和输出结构的定义了,这里,主要是用了in关键字表示这个参数的定义是用
来输入的,out表示用来输出的,这样就不用返回值了。这样对少量参数是使用的,对于复杂一点的顶点程序
还是建议使用结构,这是个好的编程习惯。。好,顶点程序就大概介绍到这里,下次就是片段程序了..
|
|
|
|
|
|
|
|
|