雷达航迹显示方法、装置与流程

文档序号:29800847发布日期:2022-04-23 20:06阅读:639来源:国知局
雷达航迹显示方法、装置与流程

1.本发明涉及雷达数据处理技术领域,尤其涉及一种雷达航迹显示方法、装置。


背景技术:

2.根据通用的雷达航迹数据显示内容划分,包括历史航迹点和航迹标牌等显示元素。
3.现有技术中,显示方式是ui线程以一定的周期读取航迹数据进行显示,例如在qt框架下使用qpainter,或者基于opengl的glvertex顶点进行绘制,但这两种绘制方法都存在缺陷,缺陷是在绘制线程中进行了历史航迹点位置和航迹标牌的运算,一旦数据量大,处理器性能低时,将会导致其他窗口无法及时收到响应事件,界面出现卡死状态。另外,qpainter在进行绘制时由于没有用到显卡的计算和渲染能力,绘制效率较低,glvertex虽然使用了显卡的计算和渲染能力,但每一个glvertex都需要与显卡进行一次通信,频繁切换和通信导致显示效率降低。
4.综上所述,在国产化(性能较低)的机器上显示大批量的雷达航迹,存在的问题是,航迹历史点计算能力较差、标牌文字显示效率较低以及与显卡通信次数较多。


技术实现要素:

5.发明目的:本发明提供一种雷达航迹显示方法、装置,旨在通过对已计算的历史航迹点进行标注,并存储于顶点数组中,避免对于历史航迹点的重复计算和在绘制过程中进行历史航迹点坐标的计算;通过建立纹理表,并将文字数据以纹理格式存储于纹理表中,避免每次绘制时于字体引擎库中进行读取和加载;通过建立顶点缓存区对象和顶点数组对象,定时一次性将缓存写入显卡,降低与显卡的通信次数。
6.技术方案:本发明提供一种雷达航迹显示方法,包括:历史航迹点坐标计算步骤:启动计算线程和定时器;所述定时器每隔固定时间更新,更新时修改所述计算线程的计算标识为第一标识;所述计算线程的计算标识为第一标识时,遍历并计算航迹档案中的历史航迹点的位置,对已计算的历史航迹点进行标注,并存储于顶点数组中;所述计算线程完成遍历和计算之后,修改所述计算线程的计算标识为第二标识;文字标牌绘制步骤:建立纹理表;遍历航迹档案中的标牌信息,于字体引擎库中读取对应的文字数据;查询文字数据是否存在纹理表中,若不存在,则从字体引擎库中以纹理格式将文字数据存储于纹理表中,调取纹理格式的文字数据;若存在,则从纹理表中调取纹理格式的文字数据;调用opengl函数按照绘制纹理的方式绘制文字;着色显示步骤:对计算完成和绘制完成的历史航迹点和文字标牌,进行位置计算和颜色着色;建立历史航迹点位置缓存、文字标牌纹理缓存以及对应的颜色缓存;建立顶点缓存区对象,将历史航迹点位置缓存、文字标牌纹理缓存以及对应的颜色缓存写入对应的顶点缓存区对象;将多个顶点缓存区对象写入顶点数组对象;将顶点数组对象写入gpu中进行显示。
7.具体的,标注并存储于顶点数组中的历史航迹点不参与后续计算线程的计算。
8.具体的,根据纹理表中纹理格式的文字数据的文字下标,查询文字数据是否存在纹理表中。
9.具体的,使用顶点着色器对历史航迹点位置和文字标牌纹理进行位置计算,使用片元着色器对历史航迹点位置和文字标牌纹理进行颜色着色。
10.具体的,定时将顶点数组对象写入gpu中进行显示。
11.具体的,所述顶点数组对象包括写入的顶点缓存区对象的索引;顶点缓存区对象包括写入的缓存的索引。
12.本发明还提供一种雷达航迹显示装置,包括:历史航迹点坐标计算单元、文字标牌绘制单元和着色显示单元,其中:所述历史航迹点坐标计算单元,用于启动计算线程和定时器;所述定时器每隔固定时间更新,更新时修改所述计算线程的计算标识为第一标识;所述计算线程的计算标识为第一标识时,遍历并计算航迹档案中的历史航迹点的位置,对已计算的历史航迹点进行标注,并存储于顶点数组中;所述计算线程完成遍历和计算之后,修改所述计算线程的计算标识为第二标识;所述文字标牌绘制单元,用于建立纹理表;遍历航迹档案中的标牌信息,于字体引擎库中读取对应的文字数据;查询文字数据是否存在纹理表中,若不存在,则从字体引擎库中以纹理格式将文字数据存储于纹理表中,调取纹理格式的文字数据;若存在,则从纹理表中调取纹理格式的文字数据;调用opengl函数按照绘制纹理的方式绘制文字;所述着色显示单元,用于对计算完成和绘制完成的历史航迹点和文字标牌,进行位置计算和颜色着色;建立历史航迹点位置缓存、文字标牌纹理缓存以及对应的颜色缓存;建立顶点缓存区对象,将历史航迹点位置缓存、文字标牌纹理缓存以及对应的颜色缓存写入对应的顶点缓存区对象;将多个顶点缓存区对象写入顶点数组对象;将顶点数组对象写入gpu中进行显示。
13.具体的,标注并存储于顶点数组中的历史航迹点不参与后续计算线程的计算。
14.具体的,所述文字标牌绘制单元,用于根据纹理表中纹理格式的文字数据的文字下标,查询文字数据是否存在纹理表中。
15.具体的,所述着色显示单元,用于定时将顶点数组对象写入gpu中进行显示。
16.有益效果:与现有技术相比,本发明具有如下显著优点:避免对于历史航迹点坐标的重复计算和在绘制过程中进行历史航迹点的计算,避免每次绘制时于字体引擎库中进行读取和加载,降低与显卡的通信次数,总体上降低计算量,提升雷达航迹显示的效率。
附图说明
17.图1为本发明提供的雷达航迹显示方法的步骤示意图。
具体实施方式
18.下面结合附图对本发明的技术方案作进一步说明。
19.参阅图1,其为本发明提供的雷达航迹显示方法的步骤示意图,本发明应用于国产环境下的雷达航迹显示。
20.历史航迹点坐标计算步骤中,步骤1,启动计算线程和定时器;所述定时器每隔固定时间更新,更新时修改所述计算线程的计算标识。
21.在具体实施中,定时器更新的固定时间可以根据实际应用场景进行相应的设定。
22.历史航迹点计算步骤中,步骤2,所述计算线程的计算标识为第一标识时,遍历并计算航迹档案中的历史航迹点的位置,对已计算的历史航迹点进行标注,并存储于顶点数组中。
23.本发明实施例中,标注并存储于顶点数组中的历史航迹点不参与后续计算线程的计算。
24.在具体实施中,对于已经计算完成的历史航迹点放入顶点数组,不参与后续计算线程的计算,使用单独或多个线程中进行计算历史航迹点,避免对于历史航迹点的重复计算和在绘制过程中进行历史航迹点的计算,并且放入顶点数组中的缓存数据可以被统一定义,等待后续的着色绘制,进而降低计算量,提升显示效率。
25.历史航迹点计算步骤中,步骤3,所述计算线程完成遍历和计算之后,修改所述计算线程的计算标识为第二标识。
26.在具体实施中,只有当定时器修改计算线程的计算标识为第一标识时,计算线程才开始计算工作,在计算线程的计算标识为其他时,计算线程处于等待状态中,也即无需计算线程持续进行工作,由此可以节省计算资源,提升显示效率。
27.在具体实施中,数据计算量大导致界面卡死的根本问题在于,占用过多的ui线程资源,可以将数据的计算放在单独或多个线程中进行计算,计算结果放入缓存中,减少不必要的查询和计算工作。
28.文字标牌绘制步骤中,步骤1,建立纹理表。
29.在具体实施中,初始的纹理表通常是空白的。
30.文字标牌绘制步骤中,步骤2,遍历航迹档案中的标牌信息,于字体引擎库中读取对应的文字数据。
31.文字标牌绘制步骤中,步骤3,查询文字数据是否存在纹理表中,若不存在,则从字体引擎库中以纹理格式将文字数据存储于纹理表中,调取纹理格式的文字数据;若存在,则从纹理表中调取纹理格式的文字数据。
32.本发明实施例中,根据纹理表中纹理格式的文字数据的文字下标,查询文字数据是否存在纹理表中。
33.在具体实施中,由于国产环境下的雷达显示是基于opengl,而该函数只具有纹理绘制功能,没有文字绘制功能,因此于字体引擎库中读取的文字数据,需要以纹理格式存储在纹理表中,为便于查询,纹理格式的文字数据会附于相应的文字下标。
34.在具体实施中,通过设置纹理表,将文字数存储在纹理表中,在需要对文字标牌进行绘制时,可以直接从纹理表中调用文字数据,无需每次都读取字体引擎库,由于纹理格式数据的绘制计算占据较大的计算量,直接调用已经存储的纹理格式数据,可以显著降低计算量,提升显示效率。
35.在具体实施中,考虑到国产化需求,使用freetype字体引擎库。
36.文字标牌绘制步骤中,步骤4,调用opengl函数按照绘制纹理的方式绘制文字。
37.着色显示步骤中,步骤1,对计算完成和绘制完成的历史航迹点和文字标牌,进行
位置计算和颜色着色。
38.本发明实施例中,使用顶点着色器对历史航迹点位置和文字标牌纹理进行位置计算,使用片元着色器对历史航迹点位置和文字标牌纹理进行颜色着色。
39.在具体实施中,使用顶点着色器(.vert)和片元着色器(.frag)进行计算和着色后,产生历史航迹点位置缓存数据、文字标牌纹理缓存数据以及对应的颜色缓存数据。顶点着色器,输入的可以是位置和颜色数据两个属性,输出是变换后的位置和颜色。
40.着色显示步骤中,步骤2,建立历史航迹点位置缓存、文字标牌纹理缓存以及对应的颜色缓存,以上缓存具体是指相应的缓存数据文件。
41.着色显示步骤中,步骤3,建立顶点缓存区对象,将历史航迹点位置缓存、文字标牌纹理缓存以及对应的颜色缓存写入对应的顶点缓存区对象。
42.着色显示步骤中,步骤4,将多个顶点缓存区对象写入顶点数组对象。
43.本发明实施例中,顶点数组对象包括写入的顶点缓存区对象的索引;顶点缓存区对象包括写入的缓存的索引。
44.在具体实施中,缓存数据文件(vert文件和frag文件)经过编译后,创建顶点缓存区对象(vbo,vertex buffer object),按照数据类型保存实际顶点(历史航迹点位置缓存和文字标牌纹理缓存)和对应的颜色数据缓存,创建顶点数组对象(vao,vertex array object),vao通过索引连接各个vbo,用于后续opengl上下文进行查找。
45.本发明实施例中,定时将顶点数组对象写入gpu中进行显示。
46.在具体实施中,通过建立顶点缓存区对象和顶点数组对象,定时一次性将缓存写入显卡,相比现有技术中每一个glvertex都需要与显卡进行一次通信相比,降低与显卡的通信次数,节省计算资源,提升显示效率。
47.本发明还提供一种雷达航迹显示装置,包括:历史航迹点计算坐标单元、文字标牌绘制单元和着色显示单元,其中:所述历史航迹点坐标计算单元,用于启动计算线程和定时器;所述定时器每隔固定时间更新,更新时修改所述计算线程的计算标识为第一标识;所述计算线程的计算标识为第一标识时,遍历并计算航迹档案中的历史航迹点的位置,对已计算的历史航迹点进行标注,并存储于顶点数组中;所述计算线程完成遍历和计算之后,修改所述计算线程的计算标识为第二标识;所述文字标牌绘制单元,用于建立纹理表;遍历航迹档案中的标牌信息,于字体引擎库中读取对应的文字数据;查询文字数据是否存在纹理表中,若不存在,则从字体引擎库中以纹理格式将文字数据存储于纹理表中,调取纹理格式的文字数据;若存在,则从纹理表中调取纹理格式的文字数据;调用opengl函数按照绘制纹理的方式绘制文字;所述着色显示单元,用于对计算完成和绘制完成的历史航迹点和文字标牌,进行位置计算和颜色着色;建立历史航迹点位置缓存、文字标牌纹理缓存以及对应的颜色缓存;建立顶点缓存区对象,将历史航迹点位置缓存、文字标牌纹理缓存以及对应的颜色缓存写入对应的顶点缓存区对象;将多个顶点缓存区对象写入顶点数组对象;将顶点数组对象写入gpu中进行显示。
48.本发明实施例中,标注并存储于顶点数组中的历史航迹点不参与后续计算线程的计算。
49.本发明实施例中,所述文字标牌绘制单元,用于根据纹理表中纹理格式的文字数据的文字下标,查询文字数据是否存在纹理表中。
50.本发明实施例中,所述着色显示单元,用于定时将顶点数组对象写入gpu中进行显示。
51.本发明实施例中,所述顶点数组对象包括写入的顶点缓存区对象的索引;顶点缓存区对象包括写入的缓存的索引。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1