资源简介
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个文件信息
相关资源
- Instagram Filters 破解了Instagram App的几十
- opengl 3d obj模型加载,贴图
- 实时计算机图形学 第二版英文版pdf格
- OpenGL实践三:水面涟漪的逼真绘制毕
- Opengl实现的Ray Casting 光线投射算法
- 天空盒(opengl)
- opengl图形学实验七 不同的光照渲染
- OpenGL-Nehe完整中文教程和全部源代码
- 扫描线填充算法的OpenGL实现
- OpenGL soil库与布置方法,位置
- 基于opengl的杯子模型
- opengl 红宝书 计算机图形学红宝书 图
- 一套基于QT、GDAL、OpenGL的遥感影像显
- OpenGL 画荷花
- OpenGL安装包+安装指导Windows平台
- freeglut,包括.dll、.h和.lib文件,完美
- OpenGL的虚拟校园漫游系统的设计与实
- 基于OpenGL的Loop网格细分
- OPenGL地层时适渲染LOD
- OpenGL使用画家算法实现隐藏面的消除
- OpenGL实现3D小车
- 基于VS2010的OpenGL 3D场景
- 使用OpenGL实现飞机动画
- OpenGL圣诞树
- 计算机图形学OpenGL——地月系
- opengl立体树
- OpenGL+FreeType渲染宋体中文
- opengl库文件132171
- opengl场景设计(房子+烟花+漫游+山)
- 扫描线有序边表实现
评论
共有 条评论