QT5 OPenGL(三, 图形旋转)
来源:互联网 发布:巨人网络手游客服 编辑:程序博客网 时间:2024/06/05 14:12
- 概要
- 实例效果图
- 主要实现代码
- 关键点解析
概要
图形旋转在很多游戏里面,或一些需要特效的场合用得比较多,一个动态的图形图片是比静态的有更好的动态效果的。
实例效果图
主要实现代码
void OpenglWidget::initializeGL(){ glShadeModel(GL_SMOOTH); glClearColor(0.0, 0.0, 0.0, 0.0); glClearDepth(1.0); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);}void OpenglWidget::initWidget(){ setGeometry( 400, 200, 640, 480 ); setWindowTitle(tr("opengl demo"));}void OpenglWidget::paintGL(){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef( -1.5, 0.0, -6.0 ); glRotatef( m_rotateRectangle, 0.0, 1.0, 0.0 ); glBegin( GL_QUADS ); glColor3f(1.0, 0.0, 0.0); glVertex3f( -1.0, 1.0, 0.0 ); glColor3f(0.0, 1.0, 0.0); glVertex3f( 1.0, 1.0, 0.0 ); glColor3f(0.0, 0.0, 1.0); glVertex3f( 1.0, -1.0, 0.0 ); glColor3f(1.0, 1.0, 1.0); glVertex3f( -1.0, -1.0, 0.0 ); glEnd(); glLoadIdentity(); glTranslatef( 1.5, 0.0, -6.0 ); glRotatef( m_rotateTriangle, 1.0, 0.0, 0.0 ); glColor3f((GLfloat)0.3, (GLfloat)0.2, (GLfloat)0.5); glBegin( GL_TRIANGLES ); qDebug() << "this is a paintGL test!"; glVertex3f( 0.0, 1.0, 0.0 ); glVertex3f( -1.0, -1.0, 0.0 ); glVertex3f( 1.0, -1.0, 0.0 ); glEnd(); m_rotateRectangle += 20; m_rotateTriangle += 20;}
关键点解析
在图片的旋转的过程中,主要调用的是这个函数
void APIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
这个函数有四个参数, 我们怎么来理解这些参数呢? 下面是我总结的一些内容。
第一个是旋转的角度。我们如果要让上面的图片快速动起来,就必须不停地拖动窗口, 这样才能不停地画图。 而旋转的角度,也就必须不停地添加,或者说变动,才会动起来。
就如同在画一张图片,而这个图片的角度, 就是我们设置的angle角度, 如果这个角度不变动,图片也将不会变动, 所以会是一张固定的图片显示,只有当角度在变动的时候, 由于我们拖动窗口,导致不停地重画不同角度的这个图片, 才产生动态的效果。
后面,三个参数, x, y, z代表着这个三维空间的坐标。这个图片的旋转,可以理解为, 我们以坐标原点为起点,再以(x, y, z)为终点, 这两点连成一条线, 而图片以它的中心为原点就绕着这条线来旋转。 所以, 当(x, y, z)三个参数中,有两个为空时,就如同绕着一个坐标轴在旋转。
0 0
- QT5 OPenGL(三, 图形旋转)
- OpenGL图形旋转
- QT5 OPenGL(二,平面图形上色)
- QT5 OpenGL (四, 绘制立体图形)
- QT5 OpenGL(五,立体图形贴图)
- openGL 旋转的图形 矩阵操作
- OpenGL学习五:矢量图形旋转
- Opengl 画2D图形,旋转图
- MFC+OpenGL单文档实现图形旋转
- openGL拆分屏幕与图形旋转
- opengl 图形变化:平移,比例,旋转
- WIN32 opengl缩放、旋转、移动图形
- Android图形---OpenGL(三)
- OpenGL学习三:绘制矢量图形模型
- 学习OpenGL(三)绘制螺旋状图形
- 三 OpenGL常见平面图形绘制代码
- OpenGL(三)图形变换之裁剪变化
- 初学Android,OpenGL ES之旋转图形(八十一)
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
- 自定义控件之——实现ScrollView上下滑动功能
- iCheck如何获得id与value
- Android studio之问题集
- 使用最新版本的Java EE eclipse构建webservice应用
- QT5 OPenGL(三, 图形旋转)
- iOS 禁用第三方键盘
- DDR3学习笔记
- App调试:页面、数据接口--源自技术
- swift为可选类型添加扩展
- js接收参数几种方式
- 二进制中1的个数
- Android Call requires API level 11 (current min is 8)的解决方案
- unity 第五期