资源简介
利用openGL与c++复刻我的世界游戏
具体情况请移步 https://blog.csdn.net/github_38838414/article/details/80010265
代码片段和文件信息
#include “Camera.h“
void Camera::setting_view_person(Man & man)
{
if (view_person == FIRST_PERSON)
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
cameraAt.x = man.x + 1.3 * cos(man.vangle / 180.0 * PI);
cameraAt.y = man.y + man.head.y;
cameraAt.z = man.z - 1.3 * sin(man.vangle / 180.0 * PI);
lookAt.x = man.x + 5 * cos(man.vangle / 180.0 * PI);
lookAt.y = man.y + man.hair.y - look_dy;
lookAt.z = man.z - 5 * sin(man.vangle / 180.0 * PI);
gluLookAt(cameraAt.x cameraAt.y cameraAt.z
lookAt.x lookAt.y lookAt.z
0.0f 1.0f 0.0f);
}
else if (view_person == GOD)
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
if (!reset_god)
{
cameraAt = godAt;
lookAt.x = 10;
lookAt.y = 0;
lookAt.z = 0;
reset_god = true;
}
gluLookAt(cameraAt.x cameraAt.y cameraAt.z
lookAt.x lookAt.y lookAt.z
0.0f 1.0f 0.0f);
}
else if (view_person == THIRD_PERSON)
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
cameraAt.x = man.x - 10 * cos(man.vangle / 180.0 * PI);
cameraAt.y = man.head.y + 10;
cameraAt.z = man.z + 10 * sin(man.vangle / 180.0 * PI);
lookAt.x = man.x;
lookAt.y = man.hair.y;
lookAt.z = man.z;
gluLookAt(cameraAt.x cameraAt.y cameraAt.z
lookAt.x lookAt.y lookAt.z
0.0f 1.0f 0.0f);
}
else if (view_person == BALL)
{
if (trackballMove)
{
glRotatef(angle axis[0] axis[1] axis[2]);
}
}
}
void Camera::change_view()
{
reset_god = false;
if (view_person >= 3)
{
view_person = 0;
}
else
{
view_person++;
}
}
void Camera::unname(int x int y int scr_wMan &man)
{
float r = 0.06;
man.vangle -= 0.1 * (x - last_mm_x);
if (x < r * scr_w && last_mm_x > x)
{
x = (1 - r) * scr_w;
// SetCursorPos(x y);
}
else if (x > (1 - r) * scr_w && last_mm_x < x)
{
x = r * scr_w;
// SetCursorPos(x y);
}
if (view_person == FIRST_PERSON)
{
look_dy += 0.01 * (y - last_mm_y);
}
last_mm_x = x;
last_mm_y = y;
}
void Camera::mouse_Button(int button int state int x int yint scr_h)
{
this->scr_h = scr_h;
if (button == GLUT_LEFT_BUTTON)
{
switch (state)
{
case GLUT_DOWN:
if (view_person == FIRST_PERSON)
{
UnProject(x y GLUT_LEFT_BUTTON);
}
cameraAt.x /= VIEW_SCALE;
cameraAt.y /= VIEW_SCALE;
cameraAt.z /= VIEW_SCALE;
startMotion(x y);
break;
case GLUT_UP:
stopMotion(x y);
break;
}
}
else if (button == GLUT_RIGHT_BUTTON)
{
// 视角收缩
if (state == GLUT_DOWN)
{
if (view_person == FIRST_PERSON)
{
UnProject(x y GLUT_RIGHT_BUTTON);
}
cameraAt.x *= VIEW_SCALE;
cameraAt.y *= VIEW_SCALE;
cameraAt.z *= VIEW_SCALE;
}
}
}
void Camera::UnProject(float mouse_x float mouse_y int c)
{
int x = mouse_x; /* 屏幕坐标 */
int y = mouse_y;
GLint viewport[4];
GLdouble mvmatrix[16] projmatrix[16];
GLfloat winx wi
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 352 2017-11-27 21:36 minecraft_1\.git\config
文件 73 2017-11-27 21:36 minecraft_1\.git\desc
文件 108 2017-12-01 14:49 minecraft_1\.git\FETCH_HEAD
文件 23 2017-11-27 21:36 minecraft_1\.git\HEAD
文件 177 2017-11-27 21:36 minecraft_1\.git\hooks\README.sample
文件 6128 2017-12-01 14:49 minecraft_1\.git\index
文件 113 2017-11-27 21:36 minecraft_1\.git\info\exclude
文件 1117 2017-12-01 14:49 minecraft_1\.git\logs\HEAD
文件 1117 2017-12-01 14:49 minecraft_1\.git\logs\refs\heads\master
文件 1052 2017-12-01 14:49 minecraft_1\.git\logs\refs\remotes\origin\master
文件 150 2017-12-01 14:49 minecraft_1\.git\ms-persist.xm
文件 238 2017-11-29 16:49 minecraft_1\.git\ob
文件 1185 2017-11-29 16:49 minecraft_1\.git\ob
文件 383015 2017-12-01 14:49 minecraft_1\.git\ob
文件 7356 2017-11-29 20:10 minecraft_1\.git\ob
文件 1284 2017-11-29 16:49 minecraft_1\.git\ob
文件 216 2017-11-29 16:49 minecraft_1\.git\ob
文件 198 2017-11-30 20:19 minecraft_1\.git\ob
文件 1043 2017-11-29 20:10 minecraft_1\.git\ob
文件 1453 2017-11-30 19:17 minecraft_1\.git\ob
文件 56 2017-11-29 20:10 minecraft_1\.git\ob
文件 818 2017-11-28 17:37 minecraft_1\.git\ob
文件 1483 2017-11-30 20:19 minecraft_1\.git\ob
文件 384 2017-11-28 17:37 minecraft_1\.git\ob
文件 122 2017-11-29 20:10 minecraft_1\.git\ob
文件 707 2017-11-28 17:37 minecraft_1\.git\ob
文件 1716 2017-11-30 20:19 minecraft_1\.git\ob
文件 495 2017-11-29 16:49 minecraft_1\.git\ob
文件 937 2017-11-28 17:37 minecraft_1\.git\ob
文件 351892 2017-12-01 14:49 minecraft_1\.git\ob
............此处省略556个文件信息
相关资源
- CAD应用程序开发详解 Visual C++与Open
- OpenGL+MFC三维绘图
- opengl绘制一个单位立方体正平行投影
- VTK图形图像开发进阶_高清完整版
- Step by Step Skeletal Animation in C++ and Ope
- opengl游戏
- glut.3.7.6+.DevPak
- opengl绘制简单小动物
- kinect+openGL+openNI+opencv实现三维重建
- openGL和C++实现光线跟踪作业
- Timer时钟.zip
- OpenGL3D
- Dialog下创建 MFC OpenGL子窗口
- 仿雷电游戏OpenGL源码C++版
- DDA画线算法
- 模拟卫星旋转和地球自转
- OpenGL纹理贴图源程序.rar
- 计算机图形学实验二 opengl
- OpenGL载入3ds模型并在MFC视图窗口显示
- 计算机图形学OpenGL画机器人
- openGL通过点线方式画出立方体并移动
- OPENGL 画颜色渐变六角星+旋转
- opengl头文件
- opengl五角星绘制
- OpenGL火焰
- OpenGL纹理茶壶
- OpenGL实现的三维桌球游戏模拟源代码
- openGL绘制的一个移动的2D小车,C++编写
- OPENGL分形模拟山脉
- kinect+opengl 生成并显示点云
评论
共有 条评论