【directX 3D游戏开发】DirectX 中的空间坐标和灵活顶点格式使用

本文介绍了DirectX中三种坐标系:自身坐标系、世界坐标系和摄像机坐标系,以及它们在3D游戏开发中的作用。重点讲解了DirectX中的左手坐标系,并探讨了灵活顶点格式(FVF),包括其允许自定义的顶点属性如位置、法线、纹理坐标等,强调了属性顺序的重要性以及如何通过FVF优化内存和渲染效率。
摘要由CSDN通过智能技术生成

            实例工程文件如下:点击打开链接

             在DirectX 中,坐标系主要分为三种,分别是:自身坐标系,世界坐标系,和摄像机坐标系

             自身坐标系:一般情况下,游戏角色的自身坐标系的原点一般在两脚之间,自身坐标系的作用是用于改变角色形状的,比如你的胳膊相对于自身原点的坐标系改变,胳膊的位置长短什么的就肯定变了

             世界坐标系:世界坐标系是物体相对于整个场景的坐标,他是用来确定的物体的位置的,一般物体的平移旋转都是对世界坐标的改变

              摄像机坐标系:顾名思义,摄像机坐标系就是相对于摄像机的坐标,以摄像机所在的位置为原点

             DirectX中,坐标系采用的是左手坐标系,就是向右为X轴的正方形,向上为Y轴的正方形,向屏幕里是Z轴的正方向,OpenGL里采用右手坐标系,这个不在我们讨论范围,所以在此不再赘述,总之,不同框架有其自己的坐标系规定,我们注意即可。

             接下来是顶点,首先要弄明白的就是,顶点有哪些属性:1、基于世界坐标系的世界坐标     2、颜色、法线、贴图、纹理坐标等

             下面介绍灵活顶点格式的概念:

       灵活顶点格式 ( Flexible Vertex Format )FVF
        其实这就是一个我们自己声明定义的一个结构,在其中,我们进行图元顶点的存储,我们在程序中用它来记录一切顶点的属性,但DX本身对它有一定的限制,那就是限制我们在设计其属性时各类型参数的顺序。在这个FVF中,我们可以设置顶点的:
        1:位置x,y,z坐标 2:RHW(已转化的顶点,齐次W倒数) 3:混合加权值 4:顶点的法线  5:扩散的颜色(漫射属性)  6:反射颜色(镜面反射属性)  7:纹理坐标集(UV坐标)等  我们可以根据不同的需要来选择部分的属性进行设置,这将比强硬全部设置来的方便,计算机在图形绘制时将根据我们的设置来处理必要的组成部分,节省了大量的内存和渲染时间。但是依旧是那句话,可以部分属性不进行设置,但顺序不可颠倒。(这一段是百度的)

             我们着重介绍一下灵活顶点格式的坐标部分:

           (1)D3DFVF_XYZ:包含未经变换的顶点坐标。【什么是未经变换?就是三维空间坐标(x,y,z),基于世界坐标系的原点(0,0,0)坐标】
           (2)D3DFVF_XYZRHW:包含经过变换的顶点坐标,【RHW是屏幕坐标】
           (3)D3DFVF_XYZW:包含经过变换和裁剪的顶点坐标,【这个也是三维坐标,只不过他们认为这是经过裁剪的坐标】

接下来,我们就用灵活顶点格式在DirectX 中画一个三角形:
1.定义灵活顶点格式:
#define  D3DFVF_CUSTOMVERTEX(D3DFVF_XYZRHW | D3DFVF_DIFFUSE)

【这是一个宏定义,CUSTOM是自定义的意思࿰
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值