关于GUI设计的Directx灵活顶点格式

  在用Directx编写GUI类时,考虑到一个问题:如何让界面视角不发生变化?也就是说当你游戏内的非UI部分随着视角坐标的转换而转换时,让UI界面始终朝向你?

 

  一个可行的解决方法是:不让UI界面在D3D中间进行矩阵转换。这个方法可以通过设置灵活顶点格式(FVF)为D3DFVF_XYZRHW来实现,下面是关于顶点格式的几个说明(可以查看Directx的SDK,此部分内容参考过网友提供的文章,将在下一篇中转载该网友文章):

  1. D3DFVF_XYZ:顶点的三维坐标(分别是XYZ),它说明顶点有位置,将由Direct3D对其进行矩阵变换;
  2. D3DFVF_XYZRHW:RHW,与D3DFVF_XYZ不同的是:它说明顶点有位置且已经过矩阵变换,不再由Direct3D对它进行矩阵变换;
  3. D3DFVF_DIFFUSE:表示顶点格式中有漫反射颜色;
  4. D3DFVF_NORMAL:表示顶点有法线向量;
  5. D3DFVF_TEXc:表示顶点有纹理坐标,c可以是1至8,表示有多少套纹理坐标;

 

  在上面的几个属性里,D3DFVF_XYZRHW和D3DFVF_XYZ、D3DFVF_NORMAL不能同时存在,因为后面的两个标志和前面这个是有冲突的,比如以下的设置是可以的:

  1. D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1;

  2. D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1;

 

  我们在写GUI类时,通常是用D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1;而在绘制游戏场景之类的图形时,一般用D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值