opengl坐标系统及绘图流程理解

opengl坐标系统及绘图流程理解
问题引入
假定我们当前要利用opengl实现一组数据的绘制,为了简单化,我们简化模型,我们将数据固定(取一些特殊点实现并验证)。基于此,本文主要解决两大块问题

  1. Opengl图形框架的构建(即学会搭建openggl环境)
  2. Opengl绘图管线的坐标转换流程(会坐标转换)
    分析
    好,从上边假设开始,我们现在已经有了这些材料:
  3. 一组需要绘制的数据点
    这里写图片描述
    已知数据A(200,200,0), B(400,200,0),C(400,400,0), D(200,400)
    我们要做的是搭建一个opengl环境,然后测试数据的管线渲染过程
    Opengl环境搭建
    本文采用基于qt的gl环境搭建,我们要做的只是继承QGLWidget,然后重载如下三个方法来初始化我们的gl环境:
    这里写图片描述
    创建view类
    这里写图片描述
    实现这三个方法
    这里写图片描述

好,接下来需要适当的改造我们的构造函数,这个可以参考QGLWIdget的构造函数,它需要什么参数我们就传入什么参数:
这里写图片描述
接下来我们只要在我们的主窗口中添加我们的view对象,即可
这里写图片描述
显示效果如下:
这里写图片描述
最后,我们在我们的三个实现函数中添加上一些初始化代码。具体要添加什么内容,你可以以这样的理解来添加代码:
initializeGL,顾名思义,我们要在该函数中初始化场景的一些矩阵和加载一些opengl扩展什么的,简单其间,我们只初始化并记录投影矩阵和模型视图矩阵,因为这是我们最关心的。
resizeGL,每次窗口的变化都会调用该函数,所以我们要在这里面随时更新我们的绘图区域,也就是glviewport这个东西。
最后paintGL,奥,这个东西是每次窗口重绘的时候调用的,我们只要在这里面根据我们所要绘制的数据动态计算更新模型视图矩阵,以及投影矩阵就可以了。
这里写图片描述
数据绘制及坐标转换解析
这里写图片描述
绘制代码(居中显示我们的数据)
这里写图片描述
效果图
数据的绘制本例中总共分为四个步骤:
1. 创建模拟数据
2. 建立投影坐标系
3. 因为我们第二步中创建的坐标系是以窗口的范围为参考的,并不与数据坐标温和,所以这一步主要完成模型视图矩阵的计算加载
4. 纯粹的openGL绘制
通过代码中可以看出,问题的重点在于,怎么将我们的数据通过opengl一系列的代码(opengl所谓的代码其实就是一个转换矩阵)转换到正确的坐标系中。
接下来我一句句将opengl的代码对应的矩阵列出来,然后我们用我们的点坐标依次加载这些矩阵,看看最终会变换成什么。
这里写图片描述

数据经过矩阵加载后的值变化过程:

这里写图片描述

这里写图片描述

这里写图片描述

读完有感,请点赞领红包
在这里插入图片描述

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值