QT与OpenGL之坐标轴缩放

在我们使用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();//重置选择好的投影矩阵
   // g
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值