• 大小: 10.4MB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-02-02
  • 语言: 其他
  • 标签:

资源简介

opengl完美天空盒 天空盒无缝连接 有CS模仿和背景音效!!绚丽

资源截图

代码片段和文件信息

#include “Camera.h“
#include 
#include 
#include 
// 默认初始化Camera属性
CCamera::CCamera()
{
// 初始化Camera为OpenGL的默认方向
CVector3 vPos(0.0 0.0 0.0);
CVector3 vView(0.0 0.0-1.0);
CVector3 vUp(0.0 1.0 0.0);

m_vPosition = vPos;
m_vView = vView;
m_vUpVector = vUp;

SetCursorPos(Window_Width >> 1 Window_Height >> 1);
ShowCursor(FALSE);
}

// 设置Camera位置
void CCamera::PositionCamera(float posX float posY float posZ
 float viewX float viewY float viewZ
 float upX float upY float upZ)
{
// 初始化Camera
CVector3 vPos = CVector3(posX posY posZ);
CVector3 vView = CVector3(viewX viewY viewZ);
CVector3 vUp = CVector3(upX upY upZ);

m_vPosition = vPos;
m_vView     = vView;
m_vUpVector = vUp;

// 将m_vView到m_vPosition的向量单位化
m_vView = m_vPosition + (m_vView-m_vPosition).GetNormalized();
SetCursorPos(Window_Width >> 1 Window_Height >> 1);
}

// 设置Camera位置
void CCamera::PositionCamera(const CVector3 &pos const CVector3 &view const CVector3 &up)
{
// 初始化Camera
m_vPosition = pos;
m_vView = view;
m_vUpVector = up;

// 将m_vView到m_vPosition的矢量单位化
m_vView = m_vPosition + (m_vView-m_vPosition).GetNormalized();
SetCursorPos(Window_Width >> 1 Window_Height >> 1);
}

// 通过移动鼠标移动Camera的方向(第一人称)
void CCamera::SetViewByMouse(void)
{
POINT mousePos; // 存储鼠标位置的结构体
//int middleX = Window_Width  >> 1; // 窗口宽度的一半
// int middleY = Window_Height >> 1; // 窗口高度的一半
int middleX = Window_Width>>1 ; // 窗口宽度的一半
int middleY = Window_Height>>1; // 窗口高度的一半
float angleY = 0.0f; // 存储向上看、向下看的角度
float angleZ = 0.0f; // 存储向左看、向右看的角度
static float currentRotX = 0.0f; // 存储总的向上、向下的旋转角度

// 获得当前鼠标位置
GetCursorPos(&mousePos);

// 如果鼠标仍然在正中间,不更新场景
if ((mousePos.x == middleX) && (mousePos.y == middleY))
{
return;
}

// 将鼠标置回屏幕的中央
SetCursorPos(middleX middleY);

// 获得鼠标移动的方向
angleY = (float)((middleX - mousePos.x)) / 100.0f;
angleZ = (float)((middleY - mousePos.y)) / 100.0f;

// 保存一个当前向上或向下旋转过的角度,可以限制Camera上下做360度旋转
currentRotX -= angleZ;  

// 如果当前的旋转弧度大于1.3,不让Camera继续向上旋转
if (currentRotX > 1.3f)
{
currentRotX = 1.3f;
}
// 如果当前的旋转弧度小于1.3,不让Camera继续向下旋转
else if (currentRotX < -1.3f)
{
currentRotX = -1.3f;
}
// 否则绕所处位置旋转视线
else
{
// 绕Camera的水平向量旋转Camera(上下)
RotateView(angleZ m_vStrafe);
}
// 绕Camera的向上向量旋转Camera(左右)
RotateView(angleY CVector3(010));
}

// 绕给出的轴旋转Camera的方向
void CCamera::RotateView(float angle const CVector3 &vAxis)
{
CVector3 vNewView;
CVector3 vView = m_vView - m_vPosition;

vNewView = vView.GetRotatedAxis(angle vAxis);

m_vView = m_vPosition + vNewView;
}

// 确认键盘控制的移动
void CCamera::CheckForMovement()
{
// 判断是否按下向上键或‘W‘键
if (GetKeyState(VK_UP) & 0x80 || GetKeyState(‘W‘) & 0x80)
{
MoveCamera(MOVESPEED); // 向前移动Camera
}

// 判断是否按下向下键或‘S‘键
if (GetKeyState(VK_DOWN) & 0x80 || GetKeyState(‘S‘) & 0x80)
{
M

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-11-08 22:24  天空盒\
     文件        4724  2011-04-13 13:53  天空盒\Camera.cpp
     文件        1345  2011-04-13 13:50  天空盒\Camera.h
     文件        4937  2004-11-28 19:33  天空盒\CDSound.cpp
     文件         918  2004-12-01 18:34  天空盒\CDSound.h
     文件         766  2011-04-12 11:34  天空盒\crosshair.cur
     目录           0  2011-11-08 22:23  天空盒\Data\
     文件      786486  2011-04-12 19:00  天空盒\Data\5Back.bmp
     文件      786486  2011-04-12 19:00  天空盒\Data\5Bottom.bmp
     文件      786486  2011-04-12 19:00  天空盒\Data\5Front.bmp
     文件      103885  2009-03-19 20:07  天空盒\Data\5Front.jpg
     文件      786486  2011-04-12 19:00  天空盒\Data\5Left.bmp
     文件      786486  2011-04-12 19:00  天空盒\Data\5Right.bmp
     文件      786486  2011-04-12 19:00  天空盒\Data\5Top.bmp
     文件      786486  2011-04-12 19:00  天空盒\Data\7back.bmp
     文件      786486  2011-04-12 19:00  天空盒\Data\7bottom.bmp
     文件      786486  2011-04-12 19:00  天空盒\Data\7front.bmp
     文件      786486  2011-04-12 19:00  天空盒\Data\7left.bmp
     文件      786486  2011-04-12 19:00  天空盒\Data\7right.bmp
     文件      786486  2011-04-12 19:00  天空盒\Data\7top.bmp
     目录           0  2011-11-08 22:24  天空盒\Debug\
     文件       30187  2011-04-13 22:25  天空盒\Debug\Camera.obj
     文件       17630  2011-04-13 22:25  天空盒\Debug\CDSound.obj
     文件         766  2005-05-27 23:59  天空盒\Debug\crosshair.cur
     文件      137216  2009-04-14 13:32  天空盒\Debug\Fmod.dll
     文件      155352  2009-04-14 13:32  天空盒\Debug\Fmodvc.lib
     文件       16224  2011-04-13 22:50  天空盒\Debug\Font.obj
     文件     2049024  2008-12-11 13:07  天空盒\Debug\Hang.bsc
     文件     1145588  2011-04-14 10:04  天空盒\Debug\Hang.ilk
     文件     4074336  2011-04-13 22:52  天空盒\Debug\Hang.pch
     文件      844800  2011-04-14 10:04  天空盒\Debug\Hang.pdb
............此处省略31个文件信息

评论

共有 条评论

相关资源