#include"stdlib.h"
#include"iostream"
#include"gltools.h"
#include"GLBatch.h"
#include"GLShaderManager.h"
#include"math.h"
#ifdef __APPLE__
#include <glut/glut.h> // OS X version of GLUT
#else
#define FREEGLUT_STATIC
#include <GL/glut.h> // Windows FreeGlut equivalent
#endif
using namespace std;
GLShaderManager shaderManager;
GLTriangleBatch sphereBatch;
bool mouseLeftDown=false;
bool mouseRightDown=false;
float mouseX,mouseY;
float cameraZ;
float rotX,rotY;
const float offset = 0.01;
void ChangeSize(GLint w,GLint h)
{
if(h == 0)
h = 1;
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60,(GLfloat)w/(GLfloat)h,0.1,100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void RenderScene()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
//不要忘记加载模型视图矩阵!!!
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//简单地调用以下平移和旋转函数实现控制
glTranslatef(0,0,cameraZ);
glRotatef(rotX, 1.0f, 0.0f, 0.0f);
glRotatef(rotY, 0.0f, 1.0f, 0.0f);
glColor3f(0,1,1);
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
sphereBatch.Draw();
glutSwapBuffers();
// glutPostRedisplay();
}
/*
//button:GLUT_LEFT_BUTTON , GLUT_MIDDLE_BUTTON , GLUT_RIGHT_BUTTON
//state:GLUT_DOWN , GLUT_UP
//x , y坐标值
*/
void mouse(int button, int state, int x, int y)
{
mouseX = x;
mouseY = y;
if(button == GLUT_LEFT_BUTTON)
{
if( state == GLUT_DOWN)
mouseLeftDown = true;
else if(state == GLUT_UP)
mouseLeftDown = false;
}
else if(button == GLUT_RIGHT_BUTTON)
{
if( state == GLUT_DOWN)
mouseRightDown = true;
else if(state == GLUT_UP)
mouseRightDown = false;
}
glutPostRedisplay();
}
void motion(int x, int y)
{
float dx = x-mouseX;
float dy = y-mouseY;
//x与y的位置相互颠倒
if(mouseLeftDown == true)
{
rotY += dx;
rotX += dy;
}
else if(mouseRightDown == true)
{
cameraZ += dy*offset;
}
mouseX = x;
mouseY = y;
glutPostRedisplay();
}
void SetupRC()
{
glClearColor(0,0,0,1);
glEnable(GL_DEPTH_TEST);
gltMakeSphere(sphereBatch,5,15,30);
}
int main(int argc, char* argv[])
{
gltSetWorkingDirectory(argv[0]);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA |GLUT_DEPTH);
glutInitWindowSize(800, 600);
glutCreateWindow("MouseMotion");
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
glutMouseFunc(mouse);
glutMotionFunc(motion);
GLenum err = glewInit();
if (GLEW_OK != err) {
fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));
return 1;
}
SetupRC();
glutMainLoop();
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
物体缩放旋转例子(GLUT).rar (73个子文件)
mouseMove
mouseMove.sln 894B
Debug
mouseMove.ilk 1.41MB
mouseMove.exe 449KB
mouseMove.pdb 1.64MB
mouseMove.v11.suo 25KB
mouseMove.sdf 36.38MB
mouseMove
mouseMove.vcxproj.filters 947B
Debug
link.7744.read.1.tlog 2B
link.7464-rc.read.1.tlog 2B
link.6856.write.1.tlog 2B
link.7744-cvtres.write.1.tlog 2B
link.7464-cvtres.read.1.tlog 2B
link-rc.write.1.tlog 2B
CL.write.1.tlog 320B
link.1576-rc.read.1.tlog 2B
link.4948-rc.read.1.tlog 2B
mouseMove.log 3KB
link.1880-cvtres.read.1.tlog 2B
link.1880.read.1.tlog 2B
link.1576-cvtres.write.1.tlog 2B
vc110.idb 715KB
mouseMove.lastbuildstate 58B
link.7464-cvtres.write.1.tlog 2B
link.4948.write.1.tlog 2B
link-cvtres.write.1.tlog 2B
link.6084-rc.write.1.tlog 2B
link.6856-cvtres.write.1.tlog 2B
link.4948-cvtres.read.1.tlog 2B
link.7180.read.1.tlog 2B
link.1880-rc.read.1.tlog 2B
link.1880-cvtres.write.1.tlog 2B
link.1576-cvtres.read.1.tlog 2B
link.1576.read.1.tlog 2B
link.7180-rc.write.1.tlog 2B
link.command.1.tlog 1KB
CL.read.1.tlog 29KB
link.7180-cvtres.write.1.tlog 2B
mousemove.obj 166KB
link.6084.read.1.tlog 2B
link-cvtres.read.1.tlog 2B
link.6084-cvtres.read.1.tlog 2B
link.7744-cvtres.read.1.tlog 2B
link.6856.read.1.tlog 2B
link.1880.write.1.tlog 2B
link.1880-rc.write.1.tlog 2B
link.4948-rc.write.1.tlog 2B
link.7180.write.1.tlog 2B
link.6084-rc.read.1.tlog 2B
link.6856-rc.write.1.tlog 2B
link-rc.read.1.tlog 2B
link.7744-rc.read.1.tlog 2B
link.1576-rc.write.1.tlog 2B
link.4948.read.1.tlog 2B
link.7464.write.1.tlog 2B
link.write.1.tlog 392B
link.7744-rc.write.1.tlog 2B
link.6856-cvtres.read.1.tlog 2B
link.6084.write.1.tlog 2B
link.7180-rc.read.1.tlog 2B
cl.command.1.tlog 606B
link.7180-cvtres.read.1.tlog 2B
link.1576.write.1.tlog 2B
link.6856-rc.read.1.tlog 2B
vc110.pdb 396KB
link.6084-cvtres.write.1.tlog 2B
link.4948-cvtres.write.1.tlog 2B
link.7744.write.1.tlog 2B
link.7464-rc.write.1.tlog 2B
link.read.2.tlog 2B
link.read.1.tlog 4KB
link.7464.read.1.tlog 2B
mousemove.cpp 3KB
mouseMove.vcxproj 4KB
共 73 条
- 1
资源评论
- x9238893562017-02-27还好吧,好像吧不能缩放,其他都可以
- weihuajuan2016-03-12谢谢分享!!!
- hanlu2222015-11-09可以使用,很好
lulu_jiang66
- 粉丝: 2
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功