⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 camera.cpp

📁 DirectInput的基本实现 只是基本应用
💻 CPP
字号:
#include <d3d9.h>
#include <d3dx9.h>
#include "Camera.h"

// 构造函数
Camera::Camera()
{
	D3DXVECTOR3	eye(-350.0f,450.0f,0.0f);
	D3DXVECTOR3	lookat(0.0f,0.0f,0.0f);
	D3DXVECTOR3	up(0.0f,1.0f,0.0f);
	D3DXMatrixIdentity( &m_matView );
	SetView( &eye, &lookat, &up );
}

///设置矩阵.
D3DXMATRIXA16*	Camera::SetView( D3DXVECTOR3* pvEye,D3DXVECTOR3* pvLookat,D3DXVECTOR3* pvUp)
{
	m_vEye		= *pvEye;
	m_vLookat	= *pvLookat;
	m_vUp		= *pvUp;
	D3DXVec3Normalize( &m_vView, &( m_vLookat - m_vEye ) );
	D3DXVec3Cross( &m_vCross, &m_vUp, &m_vView );

	D3DXMatrixLookAtLH( &m_matView, &m_vEye, &m_vLookat, &m_vUp);


	return &m_matView;
}

D3DXMATRIXA16* Camera::RotateLocalX( float angle )
{
	D3DXMATRIXA16 matRot;
	D3DXMatrixRotationAxis( &matRot, &m_vCross, angle );

	D3DXVECTOR3 vNewDst;
	D3DXVec3TransformCoord( &vNewDst, &(m_vEye-m_vLookat), &matRot );	

	vNewDst += m_vLookat;										

	return SetView( &vNewDst, &m_vLookat, &m_vUp );
}


D3DXMATRIXA16* Camera::RotateLocalY( float angle )
{
	D3DXMATRIXA16 matRot;
	D3DXMatrixRotationAxis( &matRot, &m_vUp, angle );

	D3DXVECTOR3 vNewDst;
	D3DXVec3TransformCoord( &vNewDst, &(m_vEye-m_vLookat), &matRot );	
	vNewDst += m_vLookat;										

	return SetView( &vNewDst, &m_vLookat, &m_vUp );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -