一种采用Qt实现雷达屏显的方法技术

技术编号:32778908 阅读:16 留言:0更新日期:2022-03-23 19:36
本发明专利技术公开了一种采用Qt实现雷达屏显的方法,将雷达上报的点航迹存储在点航迹数据缓冲区,将用户交互行为提交给行为缓冲区,图元计算线程按照预设的点航迹数据缓冲区读取周期,读取点航迹数据缓冲区,更新图形树中的基本图元,在触发用户交互行为计算时,图元计算线程从行为缓冲区读取用户交互行为,进行行为计算,更新图形树中的基本图元。在绘制线程的绘制周期达到后,所述图元计算线程读取图形树,将图形树中的基本图元转换为绘制图元,写入到绘制缓冲区中,由绘制线程进行绘制送显。本发明专利技术增加了图元计算线程,降低了CPU资源占用,可以有效防止P显图的卡顿现象。可以有效防止P显图的卡顿现象。可以有效防止P显图的卡顿现象。

【技术实现步骤摘要】
一种采用Qt实现雷达屏显的方法


[0001]本申请属于雷达屏显
,尤其涉及一种采用Qt实现雷达屏显的方法。

技术介绍

[0002]雷达显示器是用于自动实时显示雷达信息的终端设备。传统的雷达图像是接收机直接输出的原始雷达视频或者经过信号处理的雷达视频图像,这称为一次显示。经计算机处理的雷达数据或综合视频显示的雷达图像,称为二次显示。雷达显示器的类型很多,常见的画面格式有十余种,按显示的坐标数目分为一度空间显示器、二度空间显示器和三度空间显示器三类。二度空间显示器采用亮度调制,其基本型式有极坐标的P型显示器和直角坐标的B型显示器。P型显示器又称平面位置显示器(PPI)或环视显示器,属于径向圆扫描显示。
[0003]随着计算机软硬件的发展,有效利用GPU进行渲染已是大势所趋。目前,最常用的技术莫过于OpenGL。OpenGL由于其高效、与平台无关等特点,绝大部分显卡厂商都为其提供支持。使用OpenGL只是将原本在CPU上进行的运算转移至GPU。目前,使用OpenGL实现P显图的方案,并没有有效利用OpenGL缓冲区的特性,导致每一次变动都会清空缓冲区,致使OpenGL完成一帧绘制,需要消耗更多资源。Qt是一套完善的GUI框架,它具有完善的事件机制和信号槽机制。并且,Qt框架对计算机底层的绘制系统进行了抽象,添加了对OpenGL的支持。在使用OpenGL绘制的过程中,可以通过Qt的事件机制,有效的捕捉用户的交互行为,并存入缓冲区。
[0004]现有技术方案,使用OpenGL开发的P显图频繁刷新缓冲区,大量占用资源。并且P显图没有针对用户交互行为的时序控制,没有使用多线程方式处理图元的计算,导致交互时界面存在卡顿。

技术实现思路

[0005]本申请的目的是提供一种采用Qt实现雷达屏显的方法,解决P显图绘制占用资源过多,以及P显图用户交互过程中存在卡顿的问题。
[0006]为了实现上述目的,本申请技术方案如下:
[0007]一种采用Qt实现雷达屏显的方法,用于绘制雷达的P显图,所述采用Qt实现雷达屏显的方法,包括:
[0008]将雷达上报的点航迹存储在点航迹数据缓冲区,将用户交互行为提交给行为缓冲区;
[0009]图元计算线程按照预设的点航迹数据缓冲区读取周期,读取点航迹数据缓冲区,更新图形树中的基本图元;
[0010]在触发用户交互行为计算时,图元计算线程从行为缓冲区读取用户交互行为,进行行为计算,更新图形树中的基本图元;
[0011]在绘制线程的绘制周期达到后,所述图元计算线程读取图形树,将图形树中的基
本图元转换为绘制图元,写入到绘制缓冲区中,由绘制线程进行绘制送显。
[0012]进一步的,所述图元计算线程按照预设的点航迹数据缓冲区读取周期,读取点航迹数据缓冲区,更新图形树中的基本图元,包括:
[0013]读取点航迹数据缓冲区后,如果发现有新增点航迹,则生成新的基本图元,将新的基本图元加入到图形树中,并向绘制缓冲区申请缓冲;
[0014]读取点航迹数据缓冲区后,如果未发现新增点航迹,则根据从点航迹数据缓冲区读取的点航迹数据,更新图形树中对应的基本图元。
[0015]进一步的,所述触发用户交互行为计算,包括:
[0016]行为缓冲区读取周期到达,或用户交互行为完成。
[0017]进一步的,所述在触发用户交互行为计算时,图元计算线程从行为缓冲区读取用户交互行为,进行行为计算,更新图形树中的基本图元,包括:
[0018]基本图元以队列的形式存储交互行为类;
[0019]当触发用户交互行为计算时,图形树中的基本图元按照存储的交互行为类,执行行为计算结果。
[0020]进一步的,所述采用Qt实现雷达屏显的方法,还包括:
[0021]在绘制缓冲区不足时,重新申请更大的绘制缓冲区。
[0022]进一步的,所述采用Qt实现雷达屏显的方法,还包括:
[0023]在基本图元生命周期超时后,则将绘制缓冲区中对应的缓冲段的归属权清空,在预设的时间之后,如果依然没有新的基本图元申请该缓冲段,则将该缓冲段彻底删除。
[0024]本申请提供的一种采用Qt实现雷达屏显的方法,为了更进一步的降低CPU和GPU的利用率,使用Qt这一框架,使用其事件机制和信号槽,能够在保障线程安全和性能的基础上,根据OpenGL的特性进行优化,可以达成这一目的。融合了OpenGL和Qt,有效使用GPU,提高了P显图的帧率,并降低CPU资源占用;在Qt框架的基础上,对P显图进行抽象,对绘制流程进行了优化,避免了无必要的绘制与计算;对用户的交互行为进行控制,优化了用户的交互体验。
附图说明
[0025]图1为本申请采用Qt实现雷达屏显的方法流程图;
[0026]图2为本申请实施例一种图元计算线程具体的实现方式。
具体实施方式
[0027]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
[0028]导致P显图占用大量CPU资源和GPU资源,并在用户交互时卡顿的根本原因在于三点:对图形的计算消耗CPU资源;频繁无序的绘制消耗GPU资源;用户交互行为触发的绘制。优化这三个问题最为基本的是对P显图图元和可能的用户交互行为进行抽象,在此基础上则是对外部行为(如雷达上报的点航迹数据、用户交互行为)和绘制时序的控制,最终将数据提交给OpenGL的缓冲区进行绘制。
[0029]在一个实施例中,如图1所示,提供了一种采用Qt实现雷达屏显的方法,包括:
[0030]步骤S1、将雷达上报的点航迹存储在点航迹数据缓冲区,将用户交互行为提交给行为缓冲区。
[0031]P显图图元封装的形式,最终决定于如何以最小代价提交给OpenGL绘制。图元根据在绘制过程中的功能,可以分为两种:基本图元和绘制图元。基本图元用于存储图元本身的数据信息,如位置、颜色等信息,而绘制图元则是将基本图元的数据以OpenGL缓冲区格式存储,方便于OpenGL绘制。每一次图元的绘制,都会将基本图元转换为绘制图元,然后再将绘制图元传递给OpenGL绘制。
[0032]P显图的外部行为包括雷达数据输入和用户交互行为,本申请分别建立点航迹数据缓冲区和行为缓冲区。雷达数据输入是指雷达上报的点航迹,其关键性信息便是经纬高。考虑到雷达探测范围有限,可以直接视为平面处理,可以采用相似三角形的办法,将点航迹的经纬高转换为屏幕坐标,生成基本图元。
[0033]考虑到雷达上报的点航迹存在周期性规律,通过建立点航迹数据缓冲区的方式,存储雷达上报的点航迹,并按照设定的点航迹数据缓冲区读取周期从点航迹数据缓冲区中读取数据进行后续处理。
[0034]同样的,用户交互行为则是指用户使用鼠标、键盘等外部设备与P显图的交互,如鼠标组合行为等,用户交互行为是不可预测的。不可预测体现在两点:无法预测本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种采用Qt实现雷达屏显的方法,用于绘制雷达的P显图,其特征在于,所述采用Qt实现雷达屏显的方法,包括:将雷达上报的点航迹存储在点航迹数据缓冲区,将用户交互行为提交给行为缓冲区;图元计算线程按照预设的点航迹数据缓冲区读取周期,读取点航迹数据缓冲区,更新图形树中的基本图元;在触发用户交互行为计算时,图元计算线程从行为缓冲区读取用户交互行为,进行行为计算,更新图形树中的基本图元;在绘制线程的绘制周期达到后,所述图元计算线程读取图形树,将图形树中的基本图元转换为绘制图元,写入到绘制缓冲区中,由绘制线程进行绘制送显。2.根据权利要求1所述的采用Qt实现雷达屏显的方法,其特征在于,所述图元计算线程按照预设的点航迹数据缓冲区读取周期,读取点航迹数据缓冲区,更新图形树中的基本图元,包括:读取点航迹数据缓冲区后,如果发现有新增点航迹,则生成新的基本图元,将新的基本图元加入到图形树中,并向绘制缓冲区申请缓冲;读取点航迹数据缓冲区后,如果未发现新增点航迹,则根据从点航迹数据缓冲区读取的点航迹...

【专利技术属性】
技术研发人员:王江枫程仕杰王明睿卢钢刘琛史亚锋李广德
申请(专利权)人:中国电子科技集团公司第五十二研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1