d3d两点

最近开始看d3d龙皮了,有些东西不理解,查了下记录下来

1.d3d默认左手坐标系,大拇指向右x正方向,食指向上y正方向,其他手指向屏幕内,z正方向。

而右手就是在保持x,y一致时,z正方形为屏幕外而已。

2.D3DXMatrixLookAtLH()

这个函数有4个参数,第一个是用来存储最后向量计算结果的矩阵指针D3DXMATRIX*,

后面3个都是D3DXVECTOR3*类型,

第一个向量是位置,即摄相机或者说是眼睛的位置,可以想象一下,想在3d空间里,想看东西,人首先得站在某个位置。

第二个向量是眼睛看的方向,或者是目标点, 视野或者说摄像机能看到或拍摄的范围有限,必须对准某个方向。这个向量就是

第三个向量是表示世界坐标系的向上的方向,一般设为(0,1,0);

3.D3DXMatrixRorationX/Y 

设置绕X/Y轴旋转的角度,注意这里不是累加的,每次设置都是从0开始,同时解释说角度是沿着旋转轴向其原点看时,顺时针的角度,

这么看过来,就是从X/Y的正半轴向原点看才是顺时针。

最后调用生成两个D3DXMatrix rx,ry 

D3DXMATRIX p = Rx * Ry;

Device->SetTransform(D3DTS_WORLD, &p);

即可旋转

 4 FVF灵活顶点格式

要是注意点,就会好奇,为什么随着struct Vertex这个结构体里的成员不断变化,D3D依旧可以正确运行。我是在自己修改时发现问题,帖纹理一直不对。

后来查了下,FVF这种格式,通过给与不同的宏D3DFVF_XYZ,D3DFVF_NORMAL等,且不同的宏规定了数据类型和数量,且要保证顺序,这样才能让D3D正确绘出。

原文地址:https://www.cnblogs.com/cavehubiao/p/3411193.html