zoukankan      html  css  js  c++  java
  • DirectX11 学习笔记2

    上的程序的的基础上。在基类D3DBase添加摄像头功能

    //录影机
    void D3DBase::setCamera()
    {
    	//关键事件
    	//假定A,S,D,W,Q,E,Z,X,C键被按下。动摄像机
    	if(GetAsyncKeyState('W') & 0x8000)	//前
    		vZ+=0.001f;
    	if(GetAsyncKeyState('S') & 0x8000)	//后
    		vZ-=0.001f;
    	if(GetAsyncKeyState('A') & 0x8000)  //左
    		vX-=0.001f; 
    	if(GetAsyncKeyState('D') & 0x8000)   //右
    		vX+=0.001f; 
    	if(GetAsyncKeyState('Q') & 0x8000)    //上
    		vY+=0.001f;
    	if(GetAsyncKeyState('E') & 0x8000)    //下
    		vY-=0.001f;
    	//旋转
    	if(GetAsyncKeyState('Z') & 0x8000)    //x轴
    		rX+=0.001f;
    	if(GetAsyncKeyState('X') & 0x8000)    //y轴
    		rY+=0.001f;
    	if(GetAsyncKeyState('C') & 0x8000)    //z轴
    		rZ+=0.001f;
    	// 世界矩阵
    	g_World = XMMatrixIdentity();
    
    	// 观察矩阵
    	XMVECTOR Eye = XMVectorSet( 0.0f+vX, 1.0f+vY, -5.0f+vZ, 0.0f );
    	XMVECTOR At = XMVectorSet( 0.0f+vX, 1.0f+vY, 0.0f, 0.0f );
    	XMVECTOR Up = XMVectorSet( 0.0f, 1.0f, 0.0f, 0.0f );
    	g_View = XMMatrixLookAtLH( Eye, At, Up );
    	g_View*=XMMatrixRotationX(rX)*XMMatrixRotationY(rY)*XMMatrixRotationZ(rZ); 
    	// 投影矩阵
    	g_Projection = XMMatrixPerspectiveFovLH( XM_PIDIV2, width / (FLOAT)height, 0.01f, 100.0f );
    
    }
    下面写在类声明里面public:
    D3DBase():vX(0),vY(0),vZ(0),rX(0),rY(0),rZ(0){};//初始化
    float vX,vY,vZ;// 观察矩阵 Eye的坐标
    	float rX,rY,rZ;// 旋转的角度

    然后直接在渲染函数调用就可以

    //渲染
    void D3DProgam::Render()
    {
    	
    	setCamera();//这里
    	// Update our time
    	static float t = 0.0f;
    	if( g_driverType == D3D_DRIVER_TYPE_REFERENCE )
    	{
    		t += ( float )XM_PI * 0.0125f;
    	}


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    ISEX安全期计算 V4.0 多国语言版女性安全期避孕计算实用工具软件
    FireARP防火墙 V3.1防局域网ARP攻击的软件
    asp.net页面字段绑定概述
    C# 删除、遍历指定目录下的所有指定文件、文件夹
    加入收藏、设为首页常用脚本
    分页加载数据Demo
    学习fragment的生命周期
    widget控件
    Menu菜单的代码和xml的创建
    WebView控件
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4776401.html
Copyright © 2011-2022 走看看