OpenGL MFC单文档 实现轨迹球
CPoint m_mousePoint; //记录鼠标信息
GLfloat m_xAngle,m_yAngle; //控制旋转
GLfloat m_Scale; //用于缩放
GLfloat m_xPos;
GLfloat m_yPos;
2.再在构造函数中初始化:
m_xAngle = 0.0f;
m_yAngle = 0.0f;
m_Scale = 1.f;
m_xPos = 0.0f;
m_yPos = 0.0f;
void CStepinGLView::OnLButtonDown(UINT nFlags, CPoint point)
{// TODO: 在此添加消息处理程序代码和/或调用默认值m_mousePoint = point;SetCapture(); //设置鼠标按下捕获CView::OnLButtonDown(nFlags, point);
}
鼠标左键释放:
void CStepinGLView::OnLButtonUp(UINT nFlags, CPoint point)
{// TODO: 在此添加消息处理程序代码和/或调用默认值m_mousePoint = point;ReleaseCapture();CView::OnLButtonUp(nFlags, point);
}
鼠标移动:
void CStepinGLView::OnMouseMove(UINT nFlags, CPoint point)
{// TODO: 在此添加消息处理程序代码和/或调用默认值if (GetCapture() == this){m_xAngle+=(point.y-m_mousePoint.y)/3.6;m_yAngle+=(point.x-m_mousePoint.x)/3.6;InvalidateRect(NULL,FALSE);//Set the mouse pointm_mousePoint = point;}CView::OnMouseMove(nFlags, point);
}
鼠标中间滑轮:
BOOL CStepinGLView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{// TODO: 在此添加消息处理程序代码和/或调用默认值m_Scale += 0.1 *zDelta /120;InvalidateRect(NULL,FALSE);return CView::OnMouseWheel(nFlags, zDelta, pt);
}
void CStepinGLView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{// TODO: 在此添加消息处理程序代码和/或调用默认值switch (nChar){case VK_UP: m_yPos = m_yPos + 0.1f;break;case VK_DOWN: m_yPos = m_yPos - 0.1f;break;case VK_LEFT: m_xPos = m_xPos - 0.1f;break;case VK_RIGHT: m_xPos = m_xPos + 0.1f;break;default: MessageBox(L"请按 ↑ ↓ ← → 键!");break;}Invalidate(FALSE); CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
void CStepinGLView::DrawScene(void)
{//移动物体到显示区glTranslatef(0.f,0.f,-7.0f);glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);//视角变换 glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0.0,3.0,7.0, 0.0,0.0,0.0, 0.0,1.0,0.0);/*前三个参数是眼睛的位置,中间三个参数是物体所在的位置,后面三个参数表示向量,头顶朝上的方向*/ glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);glEnable(GL_NORMALIZE);glEnable(GL_COLOR_MATERIAL);glPushMatrix();LightM();glPopMatrix();glPushMatrix();glColor3f(0.5f, 0.25f, 0.0f);glTranslatef(m_xPos,m_yPos,0.0f);glRotatef(rtri,0.0f,0.1f,0.0f); //旋转glRotatef(m_xAngle, 1.0f,0.0f,0.0f);glRotatef(m_yAngle, 0.0f,1.0f,0.0f);glScalef(m_Scale,m_Scale,m_Scale); //缩放glutSolidTeapot(0.5f);glPopMatrix();glPushMatrix();glRotated(-65,1.0,0.0,0.0);DrawWater();glPopMatrix();glDisable(GL_LIGHTING);glDisable(GL_COLOR_MATERIAL);}
OpenGL MFC单文档 实现轨迹球相关推荐
- VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误...
1.问题症状 在VC++环境下,利用MFC单文档应用程序SDI下开发OpenGL程序,当调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错,出错代码如下: OpenG ...
- OCC-7.6.0 + MFC单文档应用入门教程
OCC-7.6.0 + MFC单文档应用 入门教程 磨刀不误砍柴工,如果你对MFC没任何基础,请先读这篇MFC的入门基础,它会降低你对这篇文章的恐惧感 开发环境说明 win7+ opencascade ...
- 用MFC单文档改写ARToolKit5.4的例子simpleLite
RToolkit5.4自带的示例是控制台程序,用MFC单文档改写过程如下: 1.开发环境 Win10,VS2017,ARToolkit5.4 2.新建MFC单文档程序Test 在类向导中,为CTest ...
- MFC单文档的背景上绘制一个可以自动显示文字的长方形
我在mfc单文档里设置了一个绘图区,并在上面(用pDC->Rectangle()函数)绘制了一个很小的长方形(注意:这个长方形很小,直接在上面写字无法看到),请问如何在绘制出长方形的时候让这个长 ...
- MFC单文档框架编程(二): SDI框架下的消息处理
MFC单文档框架编程(一) ...................................................................................... ...
- 【数字图像处理】 二.MFC单文档分割窗口显示图片
本文是讲述<数字图像处理>系列文章,继上篇讲述BMP格式图片和显示后,该篇讲述如何对单文档进行分割.主要是采用CSplitterWnd静态分割窗口显示图片等相关知识.本文主要结合自己的课程 ...
- MFC 学习笔记(一):MFC单文档程序运行流程梳理与总结
MFC 学习笔记(一):MFC单文档程序运行流程梳理与总结 1.MFC单文档程序运行流程 1.首先利用全局变量对象 theApp 启动应用程序 (这是因为这个全局对象,基类CWinApp中 this ...
- 【整理】MFC单文档程序窗口大小的设置
有时候根据实际需要,比如MFC单文档程序视图里内容少.空白一大半,需要调整MFC单文档程序窗口大小.限制单文档的最大最小尺寸. 1. 要控制一个框架的的最大最小尺寸,需要做两件事情,在CFrameW ...
- MFC单文档之给主窗口添加背景图片
MFC单文档之给主窗口添加背景图片 1.导入图片 选择一个bmp格式的图片,将其导入到res文件夹中,然后工程资源目录下导入此图,注意格式一定要确定是百分百bmp格式的,不然报错,有的图片很坑是假bm ...
最新文章
- 3.10 直观理解反向传播-深度学习-Stanford吴恩达教授
- var lib mysql ib_MYSQL问题解决
- 物联网通信技术,那些你不知道的事
- 内核并发控制---RCU (来自网易)
- 计算机科学与技术专业大学排名2020,2020计算机科学与技术专业最好大学排名:160余所大学上榜...
- 原码,反码,补码的表示范围总结
- jQuery Mobile 中文手册 Ajax开发版(2)
- Docker系列(四)守护式容器
- aix系统vi修改命令_aix系统VI编辑器的操作
- vscode下载Visual Studio Code User System windows及 Mac安装文件下载
- Charles安装破解和基础配置
- 快捷键,总结一些实用高效的快捷键
- html设置网格颜色,AI网格大小颜色怎么设置-设置AI网格大小颜色的方法 - 河东软件园...
- centos检测不到磁盘_CentOS 7 安装时候检测不到空余硬盘的解决办法
- win10开机桌面图像获取
- python enumerate用法
- r语言t检验输出检验统计量_R语言的各种检验
- 开机两个小时后定时关机
- 1字节不是一定是8位。
- CTFSHOW-PHP特性
热门文章
- 飞腾服务器代理上网设置
- 数学专业的数学与计算机专业的数学的比较(转)
- 如何学IT?零基础入门自学Java编程系列:java简介跟计算机常识
- php中md5加密函数怎么用,用PHP写的MD5加密函数
- VB编程:UBound获取数组上限;LBound获取数组下限-25
- APP - 支付宝怎么延时转账?能否撤回转账?
- springBoot redis开发的Java快递代拿系统(含人脸识别,验证码登录)
- 微信小程序获取用户收货地址与指纹验证接口(安卓和iphone)
- Navicat Premium 15导入excel表格
- 八股总结(二)计算机网络与网络编程