OpenGL实现鼠标旋转缩放平移操作
OpenGL实现鼠标旋转缩放平移操作:VS2015+OpenGL;加载OFF文件,实现鼠标旋转缩放平移操作,添加2个光源。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 691 2017-04-10 13:12 模型加载与绘制.gitconfig
文件 73 2017-04-10 13:12 模型加载与绘制.gitdescription
文件 23 2017-04-10 13:12 模型加载与绘制.gitHEAD
文件 177 2017-04-10 13:12 模型加载与绘制.githooksREADME.sample
文件 712 2017-04-10 13:12 模型加载与绘制.gitindex
文件 113 2017-04-10 13:12 模型加载与绘制.gitinfoexclude
文件 334 2017-04-10 13:12 模型加载与绘制.gitlogsHEAD
文件 334 2017-04-10 13:12 模型加载与绘制.gitlogs
efsheadsmaster
文件 150 2017-04-10 13:12 模型加载与绘制.gitms-persist.xml
文件 89 2017-04-10 13:12 模型加载与绘制.gitobjects d76fe4328089e5b63a9c4190badacfc35ef2624
文件 965748 2017-04-10 13:12 模型加载与绘制.gitobjects fd7388f67cb1c2cf7633462f9e0f32445e4e3a4
文件 1863 2017-04-10 13:12 模型加载与绘制.gitobjects1c9a181a44b4f9a105f0dc71a40ad0284ab6a7c4
文件 751 2017-04-10 13:12 模型加载与绘制.gitobjects1ff0c423042b46cb1d617b81efb715defbe8054d
文件 188 2017-04-10 13:12 模型加载与绘制.gitobjects3f92743f04c3bb52fe05d5b290a4aa24bf0df95b
文件 153 2017-04-10 13:12 模型加载与绘制.gitobjects4e64e8dcd3eaa4a168ad73abcbc342d560f25e16
文件 497 2017-04-10 13:12 模型加载与绘制.gitobjects51 5997613c12dd58f3400df8ce5f9f18f53bebb
文件 193 2017-04-10 13:12 模型加载与绘制.gitobjects604c79afd3ae0895b06eca47b1a40ba0aa06ff7b
文件 45297 2017-04-10 13:12 模型加载与绘制.gitobjects782d13610342afd93462108f8489576cd4b05af3
文件 439 2017-04-10 13:12 模型加载与绘制.gitobjects8a3679e83860c25d9e7ebcae8fe42ae5a20953be
文件 4147 2017-04-10 13:12 模型加载与绘制.gitobjectsaf21f2034520ae27b9a99c8d45a9bb3d6eeba590
文件 1274 2017-04-10 13:12 模型加载与绘制.gitobjectsca1c8c70724ef59efb966da6973819b882b34f23
文件 162 2017-04-10 13:12 模型加载与绘制.gitobjectsd36fabac7d7090696ab21037e25dae00e09a65a5
文件 41 2017-04-10 13:12 模型加载与绘制.git
efsheadsmaster
文件 2581 2017-04-10 13:12 模型加载与绘制.gitattributes
文件 3997 2017-04-10 13:12 模型加载与绘制.gitignore
..A..H. 30720 2017-04-15 17:21 模型加载与绘制.vsOpenGLv14.suo
文件 120832 2017-04-15 17:21 模型加载与绘制DebugOpenGL.exe
文件 618312 2017-04-15 17:21 模型加载与绘制DebugOpenGL.ilk
文件 2805760 2017-04-15 17:21 模型加载与绘制DebugOpenGL.pdb
文件 2279648 2010-12-13 14:19 模型加载与绘制OpenGLBunny.off
............此处省略53个文件信息
#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 模型加载与绘制.gitconfig
文件 73 2017-04-10 13:12 模型加载与绘制.gitdesc
文件 23 2017-04-10 13:12 模型加载与绘制.gitHEAD
文件 177 2017-04-10 13:12 模型加载与绘制.githooksREADME.sample
文件 712 2017-04-10 13:12 模型加载与绘制.gitindex
文件 113 2017-04-10 13:12 模型加载与绘制.gitinfoexclude
文件 334 2017-04-10 13:12 模型加载与绘制.gitlogsHEAD
文件 334 2017-04-10 13:12 模型加载与绘制.gitlogs
efsheadsmaster
文件 150 2017-04-10 13:12 模型加载与绘制.gitms-persist.xm
文件 89 2017-04-10 13:12 模型加载与绘制.gitob
文件 965748 2017-04-10 13:12 模型加载与绘制.gitob
文件 1863 2017-04-10 13:12 模型加载与绘制.gitob
文件 751 2017-04-10 13:12 模型加载与绘制.gitob
文件 188 2017-04-10 13:12 模型加载与绘制.gitob
文件 153 2017-04-10 13:12 模型加载与绘制.gitob
文件 497 2017-04-10 13:12 模型加载与绘制.gitob
文件 193 2017-04-10 13:12 模型加载与绘制.gitob
文件 45297 2017-04-10 13:12 模型加载与绘制.gitob
文件 439 2017-04-10 13:12 模型加载与绘制.gitob
文件 4147 2017-04-10 13:12 模型加载与绘制.gitob
文件 1274 2017-04-10 13:12 模型加载与绘制.gitob
文件 162 2017-04-10 13:12 模型加载与绘制.gitob
文件 41 2017-04-10 13:12 模型加载与绘制.git
efsheadsmaster
文件 2581 2017-04-10 13:12 模型加载与绘制.gitattributes
文件 3997 2017-04-10 13:12 模型加载与绘制.gitignore
..A..H. 30720 2017-04-15 17:21 模型加载与绘制.vsOpenGLv14.suo
文件 120832 2017-04-15 17:21 模型加载与绘制DebugOpenGL.exe
文件 618312 2017-04-15 17:21 模型加载与绘制DebugOpenGL.ilk
文件 2805760 2017-04-15 17:21 模型加载与绘制DebugOpenGL.pdb
文件 2279648 2010-12-13 14:19 模型加载与绘制OpenGLBunny.off
............此处省略53个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)