technique [id] [
<
annotation(s)
>
]
...
{
pass [id] [<annotation(s)>]
...{
.....//程序语句
}
......//可以有多个psss
}
.....
//
可以有多个technique
这就是一个典型的effect框架,有人问,那effect呢?整个不就是个effect嘛。。。。
下面解释下,technique 就是关键字,[id]是 technique的名称,然后 [<annotation(s)>]是注释啦,我这么写不会有人认为[ ]是不需的吧,这个就是说[id]这整个用名字代替掉。。。(觉得自己好白痴 寒‘’)不过注意,注释是一定要在<>也就是我们所说的尖括号里头的,这么做嘛,简单说就是规定了,具体说就是,呃,抄一段人家的,注释是用户指定的数据,他可以链接到任何技术,过程或参数。注释是为当个参数添加信息的一种灵活方式,这些信息可以通过应用程序选择任意方式读取和使用,也就是说,注释是有用的,一个注释包括,一个数据类型,一个变量名,一个等号,数据的值,最后用分号(;)结尾例如:
texture Tex0
<
string
name
=
"
tiger.bmp
"
;
>
汗吧?我也汗,具体想了解的可以参考directx的帮助,这里要是说的话要说好久,反正就是可以通过GetAnnotation()或者是GetAnnotationByName()的到,具体怎么用,讲到的时候再说
上面就是effect的编写了,一般简单的effect只要把vetex shader和pixel shader分别封装在一个pass里头就可以了,复杂的因为有好多的vetex shader和pixel shader,所以需要好好组织
下面是怎样来使用效果,第一步自然是从效果文件中创建效果接口对象,一般在DXUT框架中在OnCreateDevice()函数中通过调用D3DXCreateEffectFromFile()来创建,函数如下:
GPU编程:效果(effect)基础介绍

本文介绍了GPU编程中Effect框架的基础知识,包括technique、注释和如何使用effect。讲解了从效果文件创建效果接口对象,设置全局变量,激活technique和pass的过程。并提供了一个简单的光照效果代码示例,强调了写作此类教程的挑战和努力。
最低0.47元/天 解锁文章
2973





