转载的 自己也学学 dx初步认识

 

这周开始学习DX9.0,安装了SDK后,参考书的讲解开始学习,OGL暂时放弃,原因无非是使用者少,没有大的厂商支持等原因吧,下面写下学习中的一些收获和理解,以结交这方面的朋友,并暴露出自己未发现的缺点,

由于使用DXUT框架,先简单介绍一下使用方法,非常简单的,下载地址 http://www.onlinedown.net/soft/5288.htm
对了,你需要使用到的工具,VS2003/VS2005/VS2008任一即可,推荐使用VS2005,测试操作系统为正式盗版WIN2003,安装DX9后,
依次点击开始->所有程序->[Microsoft DirectX SDK (April 2007)]->DirectX Sample Browser
在右上角的搜索框内输入关键字"empty",查询后列表应该出来四个选项,选择第一个的[Install Project],提示输入项目名称及项目存放位置,之后讯问是否打开项目文件夹,
然后打开项目,直接F5查看是否可以正常运行,任何环境配置方面的错误都在此处解决,因为我们还没有编写一行代码,有问题只能是项目的include或者机器环境等的问题,将问题在此处解决后,可以一心一意的做DX开发了.

一些常见的错误如,打不开dxerr.lib,参考http://hi.baidu.com/kkun/blog/item/7bf27b89c6f1f5b00f244487.html

如果提示"DXUT requires a Unicode build. See the nearby comments for details",参考http://hi.baidu.com/kkun/blog/item/abee2f2e4f5561534fc226d5.html

如果能正常运行,应该显示出一个窗口来,此时表示环境设置成功,再来看生成的项目,假设你的项目名称为DXBeta,项目由Common,Resource Files两个目录和一个DXBeta.cpp组成,这里面的代码就不贴了,反正你在这个框架里不需要再关心D3D设备及D3D对象了,可以直接开始使用它们,
想立即看到一个最简单的3D效果的DEMO,可以先构造一个平面,然后从不同的角度查看它,就可以立即感受到3D的视觉效果,
下面按要求一步一步来完成这个工作,我们需要一个平面对吧,还需要什么?需要从不同的角度查看它,再来看平面如何构造;
我们需要指定平面位于哪里,换句话说,平面的四个顶点坐标确定后,这个平面的位置也就确定了,平面本身也就确定了,即是不是个平面呢?还是个半球面呢?这都是由那个四个顶点坐标来确定,那好,我们可以定义它了,因为我们打算给它贴上"磁砖", 以使看上去更像地面,所以它还需要一个纹理坐标,这个名词暂时不去做考虑,一会儿详解;
首先定义它的结构

//--------------------------------------
// Desc:顶点结构
//--------------------------------------

struct CUSTOMVERTEX
{
FLOAT x,y,z;
FLOAT u,v;
};


x,y,z表示三维空间中的坐标,u,v表示纹理坐标,
关于纹理坐标,其实也是一个"平面",一个位于内存中的平面,它的U,V意味着,你将如何把纹理贴到平面上去,它们的顶点都是一样的,你可以拉伸或者变形等,

定义完顶点结构后,我们先放下它,再做一些其它的工作,我们是不是需要一个世界坐标呀?是不是还需要一个摄像机的坐标?以及摄像机的向上的向量来表示它是正立着还是倒立着?D3D给我们提供了这样一个结构来表示三维空间中唯一的点,D3DXVECTOR3,D3D还为我们提供了一个函数来建立这个坐标,D3DXMatrixLookAtLH,这个函数接受上述三个顶点,并且将创建好的左手迪卡尔坐标放在一个矩阵中,这个矩阵我们叫它观察矩阵,最后将这个观察矩阵交给D3D变换,最终输出到显示器上,实现3D效果;

//创建并设置观察矩阵
D3DXVECTOR3 vEyePt(0.0f, 1.0f, -2.0f);
D3DXVECTOR3 vLookatPt(0.0f, 0.0f, 0.0f);
D3DXVECTOR3 vUpVec(0.0f, 1.0f, 0.0f);
D3DXMATRIXA16 matView;
D3DXMatrixLookAtLH(&matView,&vEyePt,&vLookatPt,&vUpVec);
pd3dDevice->SetTransform(D3DTS_VIEW,&matView);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值