资源简介
OpenGL实现鼠标旋转缩放平移操作:VS2015+OpenGL;加载OFF文件,实现鼠标旋转缩放平移操作,添加2个光源。

代码片段和文件信息
#include
#include
#include
#include “windows.h“
#include
using namespace std;
#include
#include
#include
#include
//窗口参数
static int GLWindow_height = 600;
static int GLWindow_width = 600;
//平移、缩放、旋转
static int scaling = 0;
static int translating = 0;
static int rotating = 0;
static float scale = 1.0;
static float rotation[3] = { 0.0 0.0 0.0 };
static float translation[3] = { 0.0 0.0 -4.0 };
static int GLmouse[2] = { 00 };
static int GLbutton[3] = { 000 };
//点
struct point
{
GLfloat x;
GLfloat y;
GLfloat z;
GLfloat dx;
GLfloat dy;
GLfloat dz;
int num;
};
//三角面片
struct triangle
{
int p1;
int p2;
int p3;
GLfloat dx;
GLfloat dy;
GLfloat dz;
};
point Point[40000];
triangle Triangle[70000];
int m n t;
string s;
void GLRedraw(void)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0 (GLfloat)GLWindow_width / (GLfloat)GLWindow_height 1 8000.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0 600 0 0 0 0 0 0 1);
//平移、缩放、旋转
glTranslatef(translation[0] translation[2] translation[1]);
glScalef(scale scale scale);
glRotatef(rotation[0] 1.0 0.0 0.0);
glRotatef(rotation[1] 0.0 1.0 0.0);
glRotatef(rotation[2] 0.0 0.0 1.0);
//光位置变化
static GLfloat light0_position[] = { 3.0 4.0 0.0 0.0 };
static GLfloat light1_position[] = { -3.0 -2.0 0.0 0.0 };
glLightfv(GL_LIGHT0 GL_POSITION light0_position);
glLightfv(GL_LIGHT1 GL_POSITION light1_position);
//窗口背景颜色
glClearColor(1.0 1.0 1.0 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//绘制面片
for (int i = 1;i <= n;i++)
{
glBegin(GL_TRIANGLES);
glNormal3f(Point[Triangle[i].p1].dx Point[Triangle[i].p1].dy Point[Triangle[i].p1].dz);
glVertex3f(Point[Triangle[i].p1].x Point[Triangle[i].p1].y Point[Triangle[i].p1].z);
glNormal3f(Point[Triangle[i].p2].dx Point[Triangle[i].p2].dy Point[Triangle[i].p2].dz);
glVertex3f(Point[Triangle[i].p2].x Point[Triangle[i].p2].y Point[Triangle[i].p2].z);
glNormal3f(Point[Triangle[i].p3].dx Point[Triangle[i].p3].dy Point[Triangle[i].p3].dz);
glVertex3f(Point[Triangle[i].p3].x Point[Triangle[i].p3].y Point[Triangle[i].p3].z);
glEnd();
}
glutSwapBuffers();
}
void GLMotion(int x int y)
{
y = GLWindow_height - y;
// 鼠标移动
if (rotating) {
rotation[0] += 0.5 * (y - GLmouse[1]);
rotation[2] += 0.5 * (x - GLmouse[0]);
}
else if (scaling) {
scale *= exp( (float)(y - GLmouse[1]) / (float)GLWindow_width);
}
else if (translating) {
translation[0] -= (float)(x - GLmouse[0]) / 3;
translation[1] += (float)(y - GLmouse[1]) / 3;
}
// 当前鼠标坐标
GLmouse[0] = x;
GLmouse[1] = y;
}
void GLMouse(int button int state int x int y)
{
y = GLWindow_height - y;
rotating = (button == GLUT_LEFT_BUTTON);
scaling = (button =
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 691 2017-04-10 13:12 模型加载与绘制\.git\config
文件 73 2017-04-10 13:12 模型加载与绘制\.git\desc
文件 23 2017-04-10 13:12 模型加载与绘制\.git\HEAD
文件 177 2017-04-10 13:12 模型加载与绘制\.git\hooks\README.sample
文件 712 2017-04-10 13:12 模型加载与绘制\.git\index
文件 113 2017-04-10 13:12 模型加载与绘制\.git\info\exclude
文件 334 2017-04-10 13:12 模型加载与绘制\.git\logs\HEAD
文件 334 2017-04-10 13:12 模型加载与绘制\.git\logs\refs\heads\master
文件 150 2017-04-10 13:12 模型加载与绘制\.git\ms-persist.xm
文件 89 2017-04-10 13:12 模型加载与绘制\.git\ob
文件 965748 2017-04-10 13:12 模型加载与绘制\.git\ob
文件 1863 2017-04-10 13:12 模型加载与绘制\.git\ob
文件 751 2017-04-10 13:12 模型加载与绘制\.git\ob
文件 188 2017-04-10 13:12 模型加载与绘制\.git\ob
文件 153 2017-04-10 13:12 模型加载与绘制\.git\ob
文件 497 2017-04-10 13:12 模型加载与绘制\.git\ob
文件 193 2017-04-10 13:12 模型加载与绘制\.git\ob
文件 45297 2017-04-10 13:12 模型加载与绘制\.git\ob
文件 439 2017-04-10 13:12 模型加载与绘制\.git\ob
文件 4147 2017-04-10 13:12 模型加载与绘制\.git\ob
文件 1274 2017-04-10 13:12 模型加载与绘制\.git\ob
文件 162 2017-04-10 13:12 模型加载与绘制\.git\ob
文件 41 2017-04-10 13:12 模型加载与绘制\.git\refs\heads\master
文件 2581 2017-04-10 13:12 模型加载与绘制\.gitattributes
文件 3997 2017-04-10 13:12 模型加载与绘制\.gitignore
..A..H. 30720 2017-04-15 17:21 模型加载与绘制\.vs\OpenGL\v14\.suo
文件 120832 2017-04-15 17:21 模型加载与绘制\Debug\OpenGL.exe
文件 618312 2017-04-15 17:21 模型加载与绘制\Debug\OpenGL.ilk
文件 2805760 2017-04-15 17:21 模型加载与绘制\Debug\OpenGL.pdb
文件 2279648 2010-12-13 14:19 模型加载与绘制\OpenGL\Bunny.off
............此处省略53个文件信息
相关资源
- OpenGL参考手册
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
- 用OPENGL画的一个简单的直升飞机
- opengl完美天空盒
- 3D绘图程序设计:使用Direct3D 10/9和Ope
- OpenGL绘制可运动自行车源程序.zip
- OpenGL实现飘动效果
- opengl室内场景的绘制,包括碰撞检测
评论
共有 条评论