首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

软件资讯设计 工具 系统 开发 安全 办公 陶吧 IT教育 Vista频道 | 下载中心酷我音乐盒 腾讯QQ
天极网 > 开发频道>顶点着色器入门(2)

顶点着色器入门(2)

2008-04-10 11:46作者:lovedday出处:天极网责任编辑:孙蓬阳

  17.3使用顶点着色器的步骤

  下面的列表概括了创建和使用顶点着色器的必须步骤:

  1. 编写并编译顶点着色器

  2. 创建一个IDirect3DVertexShader9接口以引用已编译的着色器代码上的顶点着色器。

  3. 用IDirect3DDevice9:: SetVertexShader方法使用这个顶点着色器。

  当然,在我们做完这些之后,我们还得销毁这个顶点着色器。

  17.3.1 编写并编译顶点着色器

  首先,我们必须编写一个顶点着色器程序。一旦着色器代码写好之后,我们就使用D3DXCompileShaderFromFile函数编译这个着色器。回忆一下,这个函数返回一个ID3DXBuffer指针,它包含已编译的着色器代码。

  17.3.2 创建顶点着色器

  一旦我们拥有了编译好的着色器代码,我们就能够获得一个IDirect3DVertexShader9接口的指针,它代表一个顶点着色器——通过使用下面的方法:

  HRESULT IDirect3DDevice9::CreateVertexShader(

  const DWORD *pFunction,

  IDirect3DVertexShader9** ppShader

  );

  pFunction——已编译着色器代码的指针

  ppShader——返回一个IDirect3DVertexShader9接口的指针

  例如,假设变量shader是一个包含已编译的,着色器代码的ID3DXBuffer指针。然后要获得一个IDirect3DVertexShader9接口,我们可以写:

  IDirect3DVertexShader9* ToonShader = 0;

  hr = Device->CreateVertexShader(

  (DWORD*)shader->GetBufferPointer(),

  &ToonShader);

  注意:重申一遍,D3DXCompileShaderFromFile是一个函数,它将返回已编译着色器的代码(shader)。

  17.3.3 建立顶点着色器

  在我们获得了一个代表我们的顶点着色器的IDirect3DVertexShader9接口的指针之后,我们就能够使用下面的方法使用它:

  HRESULT IDirect3DDevice9::SetVertexShader(

  IDirect3DVertexShader9* pShader

  );

  这个方法仅接受一个参数,我们在其中传递一个想要使用的顶点着色器的指针。要使用这个着色器,我们可以写:Device->SetVertexShader(ToonShader);

  17.3.4 销毁顶点着色器

  和所有的Direc3D接口一样,要清除他们,我们就必须在用完它们之后调用其的Release方法。

  17.4应用程序:散射光照

  作为创建并使用顶点着色器的热身,我们写一个顶点着色器,它用一个方向(平行)光对每个顶点进行标准的散射光照。简而言之,散射光照根据顶点法线和光线向量(它朝向光源方向)的角度计算顶点接收到的光线的数量。角度越小,则顶点接收到的光线就越多;而角度越大,则顶点接收到的光线就越少。如果角度大于等于90度,顶点就接收不到光线了。

  

共2页。 12下一页
进入 最权威的Windows 7论坛 查看网友讨论

软件频道最新更新

热点推荐

IT嘉年华

编辑推荐

软件下载

热门
推荐

网友关注

软件
资料
游戏

装机推荐

文章排行

本周
本月
最新更新
天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络