DX11,DX图形设计游戏跳一跳C++实现


DX图形设计的期末大项目,给各位参考一下。应有的功能都有了。
资源截图
代码片段和文件信息
#include “Camera.h“

Camera::Camera()  //构造函数,初始化Camera类的成员变量
{
flag = Rotate | Translate;    //指定标识符
rotateX = 0.0f;               //绕X轴旋转的角度
rotateY = 0.0f;                //绕Y轴旋转的角度
rotateZ = 0.0f;                //绕Z轴旋转的角度
move = XMVectorSet(0.0f 0.0f 0.0f 1.0f);  //初始化移动位置
eye = XMVectorSet(0.0f 0.0f 0.0f 1.0f);   //初始化视点位置
//初始化相机的旋转矩阵
//这里需要将XMMATRIX对象转变成XMStoreFloat4x4对象
XMMATRIX cameraRotationMATRIX = XMMatrixIdentity();
XMStoreFloat4x4(&cameraRotation cameraRotationMATRIX);
//初始化相机的观察矩阵
//同样需要将XMMATRIX对象转变成XMStoreFloat4x4对象
XMMATRIX viewMATRIX = XMMatrixIdentity();
XMStoreFloat4x4(&view viewMATRIX);
}

//仰俯
void Camera::Pitch(float angle)
{
rotateX += angle;
flag |= Rotate;
}

//偏转
void Camera::Yaw(float angle)
{
rotateY += angle;
flag |= Rotate;
}

//设置视点位置
void Camera::SetEye(const XMVECTOR& position)
{
eye = position;
flag |= Translate;
}

//获得当前视点位置
const XMVECTOR& Camera::GetEye()
{
return eye;
}

//获得当前摄像机的观察点
const XMVECTOR& Camera::GetAt()
{
return at;
}

//获得当前摄像机的正方向
const XMVECTOR& Camera::GetUp()
{
return up;
}

//向前移动摄像机,value取负值则向后移动
void Camera::MoveForwardBy(float value)
{
move = XMVectorSetZ(move value);
flag |= Translate;
}

//向右移动摄像机,value取负值则向左旋转
void Camera::MoveRightBy(float value)
{
move = XMVectorSetX(move value);
flag |= Translate;
}

//向上移动摄像机,value取负值则向下移动
void Camera::MoveUpBy(float value)
{
move = XMVectorSetY(move value);
flag |= Translate;
}

//应用当前设置生成观察变换矩阵
void Camera::Apply()
{
XMMATRIX cameraRotationMATRIX;    //声明XMMATRIX一个对象用于矩阵变换
if (flag != None)
{
if ((flag & Rotate) != 0)  //如果包含旋转标识
{
//将Rotate取否,即1110,再和flag进行与运算
//如果flag=0011则运算结果为0010
flag &= ~Rotate;
//在三个坐标系上进行旋转变换
cameraRotationMATRIX = XMMatrixRotationX(rotateX) * XMMatrixRotationY(rotateY) * XMMatrixRotationZ(rotateZ);
XMStoreFloat4x4(&cameraRotation cameraRotationMATRIX); //将生成的XMMATRIX存放到成员cameraRotation
}

if ((flag & Translate) != 0)//如果包含平移标识
{
//将Translate取否,即1110,再和flag进行与运算
//如果flag=0010则运算结果为0000
flag &= ~Translate;
//从成员cameraRotation获得旋转矩阵
cameraRotationMATRIX = xmloadFloat4x4(&cameraRotation);
//重新计算视点位置
eye += XMVector4Transform(move cameraRotationMATRIX);
move = XMVectorZero(); //重置移动向量
}
//从成员cameraRotation获得旋转矩阵
cameraRotationMATRIX = xmloadFloat4x4(&cameraRotation);
//重新计算观察点
at = eye + XMVector4Transform(XMVectorSet(0.0f 0.0f 1.0f 1.0f) cameraRotationMATRIX);
//重新计算摄像机正方向
up = XMVector4Transform(XMVectorSet(0.0f 1.0f 0.0f 1.0f) cameraRotationMATRIX);
//重新计算观察矩阵
XMMATRIX viewMATRIX = XMMatrixLookAtLH(eye at up);
//将新生成的观察矩阵存入成员view中
XMStoreFloat4x4(&view viewMATRIX);
}
}

//获得观察坐标系变换矩阵
const XMFLOAT4X4& Camera::GetView()
{
return view;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-01-03 11:37  D3Djumpganme
     目录           0  2018-01-03 11:37  D3DjumpganmeD3DTexture
     文件    44171264  2018-01-03 11:37  D3DjumpganmeD3DTexture.sdf
     文件         976  2017-12-20 10:25  D3DjumpganmeD3DTexture.sln
     文件       31232  2018-01-03 11:37  D3DjumpganmeD3DTexture.v12.suo
     文件       20753  2018-01-02 19:54  D3DjumpganmeD3DTexture.png
     文件       18986  2018-01-02 19:55  D3DjumpganmeD3DTexture1.png
     文件       20400  2018-01-02 19:55  D3DjumpganmeD3DTexture2.png
     文件       20726  2018-01-02 19:55  D3DjumpganmeD3DTexture3.png
     文件       19637  2018-01-02 19:56  D3DjumpganmeD3DTexture4.png
     文件       20143  2018-01-02 19:56  D3DjumpganmeD3DTexture5.png
     文件       21233  2018-01-02 19:56  D3DjumpganmeD3DTexture6.png
     文件       19803  2018-01-02 19:57  D3DjumpganmeD3DTexture7.png
     文件       21392  2018-01-02 19:57  D3DjumpganmeD3DTexture8.png
     文件       21175  2018-01-02 19:58  D3DjumpganmeD3DTexture9.png
     文件      592776  2018-01-02 19:59  D3DjumpganmeD3DTextureg14.jpg
     文件       66614  1999-09-25 20:19  D3DjumpganmeD3DTextureBOX.bmp
     文件        3242  2018-01-01 16:34  D3DjumpganmeD3DTextureCamera.cpp
     文件        1433  2018-01-03 11:34  D3DjumpganmeD3DTextureCamera.h
     文件       69410  2018-01-03 11:37  D3DjumpganmeD3DTextured3dTexture.cpp
     文件        4816  2018-01-01 16:34  D3DjumpganmeD3DTextureD3DTexture.vcxproj
     文件        1642  2018-01-01 16:34  D3DjumpganmeD3DTextureD3DTexture.vcxproj.filters
     文件        3267  2017-12-20 10:31  D3DjumpganmeD3DTextured3dUtility.cpp
     文件        1259  2017-12-20 10:31  D3DjumpganmeD3DTextured3dUtility.h
     目录           0  2018-01-03 11:36  D3DjumpganmeD3DTextureDebug
     文件      228424  2018-01-03 11:34  D3DjumpganmeD3DTextureDebugCamera.obj
     文件       10661  2018-01-03 11:36  D3DjumpganmeD3DTextureDebugD3DTexture.log
     文件      510358  2018-01-03 11:36  D3DjumpganmeD3DTextureDebugd3dTexture.obj
     目录           0  2018-01-03 11:36  D3DjumpganmeD3DTextureDebugD3DTexture.tlog
     文件        3326  2018-01-03 11:36  D3DjumpganmeD3DTextureDebugD3DTexture.tlogcl.command.1.tlog
     文件       62976  2018-01-03 11:36  D3DjumpganmeD3DTextureDebugD3DTexture.tlogCL.read.1.tlog
............此处省略28个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)