QT与OpenGL之坐标轴缩放
来源:互联网 发布:php 偏移量计算 编辑:程序博客网 时间:2024/05/22 11:56
在我们使用OpenGL画点的时候,默认的中心是在屏幕的中心,左右,上下,前后都是-1到1的区间,如果我们需要绘制大于这个区间的点怎么办呢?
方法一:
我们可以将所有的需要绘制的点转化到-1到1的区间。
方法二:
缩放OpenGL的坐标轴,使得重新建立的坐标轴符合我们新的标准。
下面我们就用方法二来实现如何重建坐标轴:
重新建立坐标轴,我们需要利用正交视角,可以使用glortho函数实现。
void GLWidget::resizeGL(int width, int height){ GLfloat nRange = 100.0f; if(0 == height) height = 1;//防止一条边为0 glViewport(0, 0, (GLint)width, (GLint)height);//重置当前视口,本身不是重置窗口的,只不过是这里被Qt给封装好了 //glOrtho(left, right, bottom, top, near, far); if (width <= height) glOrtho(-nRange, nRange, -nRange*height/width, nRange*height/width, -nRange, nRange); else glOrtho(-nRange*width/height, nRange*width/height, -nRange, nRange, -nRange, nRange); glMatrixMode(GL_PROJECTION);//选择投影矩阵 glLoadIdentity();//重置选择好的投影矩阵 // gluPerspective(45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0);//建立透视投影矩阵 // glMatirxMode(GL_MODELVIEW);//以下2句和上面出现的解释一样 // glLoadIdentity();}
glOrtho函数总共六个参数,在上面代码注释了,分别代表了左,右,下,上,前,后,这是按照三维的标准设定的。
在利用画线函数来实现坐标轴:
glColor3f( 1.0f, 0.0f, 0.0f );//指定线的颜色,蓝色 glBegin( GL_LINES ); { // x-axis glVertex3f( -100.0f, 0.0f, 0.0f); glVertex3f( 100.0f, 0.0f, 0.0f); // x-axis arrow glVertex3f( 100.0f, 0.0f, 0.0f); glVertex3f( 93.0f, 3.0f, 0.0f); glVertex3f( 100.0f, 0.0f, 0.0f); glVertex3f( 93.0f,-3.0f, 0.0f); // y-axis glVertex3f( 0.0f, -100.0f, 0.0f); glVertex3f( 0.0f, 100.0f, 0.0f); // y-axis arrow glVertex3f( 0.0f, 100.0f, 0.0f); glVertex3f( 3.0f, 93.0f, 0.0f); glVertex3f( 0.0f, 100.0f, 0.0f); glVertex3f( -3.0f, 93.0f, 0.0f); } glEnd();
此时的效果就是:
此时,我们再来画一个在(50,20, 0)的点:
- QT与OpenGL之坐标轴缩放
- QT与OpenGL之教你如何测试坐标轴极值
- QT与OpenGL之整体缩放
- QT与OpenGL之绘图
- QT与OpenGL之旋转
- QT与OpenGL之易错点
- openGL 坐标轴
- OpenGL之旋转缩放
- QT与OpenGL之三维旋转
- OpenGL-旋转平移与缩放
- OpenGL之旋转、平移、缩放
- opengl es 渲染方式与 纹理坐标设定 ,OpenGL ES 模型视图之缩放操作
- [经验分享] QT图片之缩放与旋转
- Qt Quick 事件处理之捏拉缩放与旋转
- OpenGL的坐标轴
- Qt 与 OpenGL ES
- Qt之OpenGL
- QT之OpenGL
- Discuz!X2 附件分表与主题图片表解析
- C++ 对象的内存布局(上)
- How to detect whether a module is managed code or not
- 正确使用New Date()返回的机器时间
- Python模块及函数的使用
- QT与OpenGL之坐标轴缩放
- POJ 3349 Snowflake Snow Snowflakes 链表
- 解决eclipse 修改替换xml文件,卡死 慢
- C/C++面试经典大全
- linux下Mysql的数据文件搬家
- shell分割字符串
- 计算一段程序运行的时间
- Android文字阴影效果
- javascript 从数组中删除指定值(不是指定位置)的元素