CN118115350A - 椭圆弧实时平滑绘制优化方法、装置、电子设备及介质 - Google Patents
椭圆弧实时平滑绘制优化方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN118115350A CN118115350A CN202410524654.8A CN202410524654A CN118115350A CN 118115350 A CN118115350 A CN 118115350A CN 202410524654 A CN202410524654 A CN 202410524654A CN 118115350 A CN118115350 A CN 118115350A
- Authority
- CN
- China
- Prior art keywords
- elliptical arc
- elliptical
- preset
- segmented
- segmentation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000005457 optimization Methods 0.000 title claims abstract description 33
- 230000011218 segmentation Effects 0.000 claims abstract description 224
- 238000013507 mapping Methods 0.000 claims abstract description 31
- 229910003460 diamond Inorganic materials 0.000 claims description 25
- 239000010432 diamond Substances 0.000 claims description 25
- 238000009877 rendering Methods 0.000 claims description 25
- 230000008569 process Effects 0.000 claims description 16
- 238000004364 calculation method Methods 0.000 claims description 15
- 230000008030 elimination Effects 0.000 claims description 4
- 238000003379 elimination reaction Methods 0.000 claims description 4
- 230000003139 buffering effect Effects 0.000 claims description 3
- 238000009499 grossing Methods 0.000 claims 1
- 239000002699 waste material Substances 0.000 abstract description 6
- 238000012545 processing Methods 0.000 description 8
- 238000011960 computer-aided design Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 101100537937 Caenorhabditis elegans arc-1 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Image Generation (AREA)
Abstract
本发明公开了一种椭圆弧实时平滑绘制优化方法、装置、电子设备及介质,用于解决现有相关方法中存在的资源浪费、绘制效率较低的问题。包括:获取预设椭圆弧分段数列表以及多个待分段椭圆弧,将多个待分段椭圆弧按照索引顺序上传至第一公共缓冲区;根据当前摄像机参数计算待分段椭圆弧的分段数;待将分段椭圆弧的分段数映射至预设椭圆弧分段数列表,获得实际分段数;将实际分段数相同的待分段椭圆弧作为目标绘制椭圆弧,并将其实时索引数据上传至同一个第二公共缓冲区,每一个第二公共缓冲区对应一个预设分段数目;针对每一预设分段数目调用一次绘制指令,通过索引绘制方式,对各个目标绘制椭圆弧同时进行实例化绘制,并输出绘制结果。
Description
技术领域
本发明涉及CAD图形绘制技术领域,尤其涉及一种椭圆弧实时平滑绘制优化方法、装置、电子设备及介质。
背景技术
在CAD(Computer Aided Design,计算机辅助设计)平台上使用硬件加速,并通过常见图形API(Application Programming Interface,应用程序编程接口)绘制圆弧和椭圆弧(由于圆弧可视为特殊的椭圆弧,因此以下将二者统称为椭圆弧)时,由于图形API通常不支持直接绘制椭圆弧,因此需要将椭圆弧分割成大量短线段。
具体的分段过程可以在CPU(Central Processing Unit,中央处理器)端或GPU(Graphics Processing Unit,图形处理器)端进行。但在实际绘制过程中,由于不同的椭圆弧具有不同的分段数,且该数据每帧都会随视口的变化而变化。因此,无论采用哪种方式,为了在GPU端能够根据每个椭圆弧的分段数,进行相应数目并行绘制操作,目前都需要先在CPU端计算并整合出椭圆弧的分段数,并将其实时上传至GPU段,不仅会带来时间和空间资源的大量浪费,还会降低绘制效率。
发明内容
本发明提供了一种椭圆弧实时平滑绘制优化方法、装置、电子设备及存储介质,用于解决或部分解决现有椭圆弧绘制相关方法中存在的时间空间资源浪费、绘制效率较低的技术问题。
本发明提供的一种椭圆弧实时平滑绘制优化方法,所述方法包括:
获取预设椭圆弧分段数列表以及多个待分段椭圆弧,并将所述多个待分段椭圆弧按照索引顺序上传至第一公共缓冲区;
根据当前摄像机参数计算每一所述待分段椭圆弧的分段数;
针对每一所述待分段椭圆弧,将所述分段数映射至所述预设椭圆弧分段数列表,获得所述待分段椭圆弧对应的实际分段数;
将实际分段数相同的待分段椭圆弧作为目标绘制椭圆弧,并将各个所述目标绘制椭圆弧所对应的实时索引数据上传至同一个第二公共缓冲区,每一所述第二公共缓冲区对应一个预设分段数目;
针对每一所述预设分段数目调用一次绘制指令,通过索引绘制方式,对各个所述目标绘制椭圆弧同时进行实例化绘制,并输出绘制结果。
可选地,所述当前摄像机参数包括当前屏幕的长宽所代表的世界空间距离,所述待分段椭圆弧对应一组绘制数据,所述根据当前摄像机参数计算每一所述待分段椭圆弧的分段数,包括:
针对每一所述待分段椭圆弧,根据所述当前屏幕的长宽所代表的世界空间距离,以及所述绘制数据,通过如下公式,计算所述待分段椭圆弧的分段数:
其中,表示计算出的待分段椭圆弧的分段数;n表示当屏幕的短边代表的世界距离为1时,直径为1的圆的分段数,为一个预定义值;/>表示所述待分段椭圆弧起始角和终止角之间的差值;l表示所述待分段椭圆弧的长轴长度;dw、dh分别表示当前屏幕的长宽所代表的世界空间距离;min表示最小值求解。
可选地,所述预设椭圆弧分段数列表包含多个预设分段数目,所述将所述分段数映射至所述预设椭圆弧分段数列表,获得所述待分段椭圆弧对应的实际分段数,包括:
通过如下公式,将所述分段数映射至所述预设椭圆弧分段数列表,获得所述待分段椭圆弧对应的实际分段数:
其中,经过映射后的实际分段数与所述多个预设分段数目中的其中一个数值相等;表示所述待分段椭圆弧映射后的实际分段数;2的k次幂为所述多个预设分段数目中的最大值。
可选地,所述通过索引绘制方式,对各个所述目标绘制椭圆弧同时进行实例化绘制,并输出绘制结果,包括:
分别将各个所述目标绘制椭圆弧的索引作为一个输入点,以点作为输入图元,通过索引绘制方式,同时对各个所述目标绘制椭圆弧同时进行实例化绘制;
在椭圆弧的绘制过程中,将所述目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,并根据比较结果,选取预设绘制方式进行实例化绘制,输出绘制结果。
可选地,所述将所述目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,并根据比较结果,选取预设绘制方式进行实例化绘制,输出绘制结果,包括:
将所述目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,当所述目标绘制椭圆弧的实际分段数小于等于预设分段阈值时,所述实际分段数等于第一实例化个数;
在顶点着色器中,通过所述第一实例化个数的实例化ID,获取每个实例对应的所述目标绘制椭圆弧当前绘制分段的第一分段绘制数据;
根据所述第一分段绘制数据,在几何着色器中将点图元转化为实际输出的线图元或三角形图元。
可选地,所述将所述目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,并根据比较结果,选取预设绘制方式进行实例化绘制,输出绘制结果,包括:
将所述目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,当所述目标绘制椭圆弧的实际分段数大于预设分段阈值时,根据所述实际分段数以及预设分段数值,计算第二实例化个数;
在顶点着色器中,根据所述目标绘制椭圆弧的绘制数据,计算所述目标绘制椭圆弧的OBB包围盒以及内接菱形,所述目标绘制椭圆弧位于所述内接菱形的外部,同时位于所述OBB包围盒的内部;
将构成所述OBB包围盒以及所述内接菱形的点位映射至屏幕空间,计算屏幕空间下所述OBB包围盒以及所述内接菱形与视口正方形之间的位置关系,并根据位置关系,剔除所述目标绘制椭圆弧中符合预设剔除要求的绘制分段,获得剔除后绘制椭圆弧;
在几何着色器中,通过所述第二实例化个数的实例化ID,获取每个实例对应的所述剔除后绘制椭圆弧中所有绘制分段的第二分段绘制数据;
根据所述第二分段绘制数据,在几何着色器中将点图元转化为实际输出的线图元或三角形图元。
可选地,所述方法还包括:
构建一个第一公共缓冲区,用以保存待分段椭圆弧的绘制数据;
预定义一系列的椭圆弧分段数,作为多个预设分段数目,并将所述多个预设分段数目以椭圆弧分段数列表形式进行保存,每一所述预设分段数目的值为2的正整数次幂;
针对每一所述预设分段数目新建一个数组,用以收集待分段椭圆弧的索引,所述待分段椭圆弧的实际分段数与所述预设分段数目的数值相同;
针对每一所述预设分段数目新建一个第二公共缓冲区,用以缓存每帧收集到的待分段椭圆弧的实时索引数据。
本发明还提供了一种椭圆弧实时平滑绘制优化装置,包括:
待分段椭圆弧数据上传模块,用于获取预设椭圆弧分段数列表以及多个待分段椭圆弧,并将所述多个待分段椭圆弧按照索引顺序上传至第一公共缓冲区;
分段数计算模块,用于根据当前摄像机参数计算每一所述待分段椭圆弧的分段数;
实际分段数映射计算模块,用于针对每一所述待分段椭圆弧,将所述分段数映射至所述预设椭圆弧分段数列表,获得所述待分段椭圆弧对应的实际分段数;
实时索引数据上传模块,用于将实际分段数相同的待分段椭圆弧作为目标绘制椭圆弧,并将各个所述目标绘制椭圆弧所对应的实时索引数据上传至同一个第二公共缓冲区,每一所述第二公共缓冲区对应一个预设分段数目;
实例化绘制模块,用于针对每一所述预设分段数目调用一次绘制指令,通过索引绘制方式,对各个所述目标绘制椭圆弧同时进行实例化绘制,并输出绘制结果。
本发明还提供了一种电子设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行如上任一项所述的椭圆弧实时平滑绘制优化方法。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行如上任一项所述的椭圆弧实时平滑绘制优化方法。
从以上技术方案可以看出,本发明具有以下优点:
提出了一种椭圆弧实时平滑绘制优化方法。首先获取预设椭圆弧分段数列表以及多个待分段椭圆弧,并将多个待分段椭圆弧按照索引顺序上传至第一公共缓冲区;接着根据当前摄像机参数计算每一待分段椭圆弧的分段数;针对每一待分段椭圆弧,将分段数映射至预设椭圆弧分段数列表,获得待分段椭圆弧对应的实际分段数;然后将实际分段数相同的待分段椭圆弧作为目标绘制椭圆弧,并将各个目标绘制椭圆弧所对应的实时索引数据上传至同一个第二公共缓冲区,每一个第二公共缓冲区对应一个预设分段数目;最后针对每一预设分段数目调用一次绘制指令,通过索引绘制方式,对各个目标绘制椭圆弧同时进行实例化绘制,并输出绘制结果。通过离散化椭圆弧分段数,基于索引数据进行索引绘制,可以大幅降低绘制空间消耗,提高绘制速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为一种椭圆弧实时平滑绘制优化方法的步骤流程图;
图2为一种椭圆弧实时平滑绘制优化方法的整体流程示意图;
图3为一种椭圆弧实时平滑绘制优化装置的结构框图。
具体实施方式
本发明实施例提供了一种椭圆弧实时平滑绘制优化方法、装置、电子设备及介质,用于解决或部分解决现有椭圆弧绘制相关方法中存在的时间空间资源浪费、绘制效率较低的技术问题。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
作为一种示例,对于椭圆弧的实时分段绘制,在实际绘制过程中,由于不同的椭圆弧具有不同的分段数,且该数据每帧都会随视口的变化而变化。因此,无论采用哪种方式,为了在GPU端能够根据每个椭圆弧的分段数,进行相应数目并行绘制操作,目前都需要先在CPU端计算并整合出椭圆弧的分段数,并将其实时上传至GPU段,不仅会带来时间和空间资源的大量浪费,还会降低绘制效率。
通过进一步分析可知,视口的放大倍数越大,椭圆弧所需的分段数也越多,绘制所消耗的时间与空间资源也会随之增多。但在实际情况中,由于此时视口覆盖到的区域十分有限,大部分椭圆弧并不会被绘制,因此对其进行的各种运算和处理都将成为无用操作。
结合前面论述内容,在CAD平台上使用常见图形API绘制椭圆弧时,需要将其分为大量的较短直线以拟合其曲线。且仅当分段的段数足够多、每段直线足够短时,整体上椭圆弧才足够平滑。当前大部分实现方案都将分段计算放在了CPU端,使得CPU端的计算负担过重,且需要每帧向GPU发送大量的冗余数据,占用了大量空间资源。
以目前一种在GPU端进行椭圆弧分段的方法为例进行示意性说明。在该方法中,为了让GPU端对每个椭圆弧进行的并行绘制操作数目,与该椭圆弧的分段数相等,当前仍需在绘制前统计每个椭圆弧的实时分段数目,并在椭圆弧的标号数组中放入与分段数目数量相同的标号数据,并上传至GPU的公共缓冲区。因此,其占用的显存和内存空间,与椭圆弧数目和椭圆弧平均分段数的乘积成正比。当分段数目较多时,会占用大量的空间资源,且在数据上传时会消耗大量的时间资源。
因此,本发明实施例的核心发明点之一在于:针对现有技术中的不足,提出一种硬件加速下利用实例化与GPU剔除,以节约显存与内存数据,支持实时缩放的椭圆弧快速实时平滑绘制方法。首先利用GPU的实例化个数表示椭圆弧分段数目,让每帧只需实时上传椭圆弧的索引数据,而无需上传空间复杂度更高的分段数据。同时,设置一个椭圆弧分段数的阈值,当一个椭圆弧的实际分段数小于等于该阈值时,令一个实例代表一个分段,直接在GPU中分段并完成绘制;当一个椭圆弧的实际分段数大于该阈值时,令一个实例代表固定的多个分段,并先在顶点着色器中进行剔除操作,而在之后的几何着色器中则根据剔除结果,再决定是否进行分段和绘制操作。采用本发明实施例所提供技术方案,通过在CPU端实时计算和离散化椭圆弧分段数,并收集索引数据,当分段数较多时,则利用椭圆弧的OBB包围盒(Oriented Bounding Box,方向包围盒)和内接菱形进行剔除处理,可以大幅降低绘制的空间消耗,并明显提高绘制速度,从而进一步优化CAD平台上椭圆弧较多场景下的性能表现。
在CAD平台上的椭圆弧绘制中,如何快速高效地完成分段操作,是决定绘制效率的重要因素之一。本发明实施例所提出的方法主要在GPU端进行分段操作。且为了避免向GPU上传与分段数相关的数据,以节省显存占用量以及数据上传时间,本发明实施例还通过采用预定义的离散分段数,而非任意的正整数作为一个椭圆弧的实际分段数,并在一次绘制中,仅绘制相同分段数的椭圆弧。从而通过这种绘制方式,基于调用绘制命令时输入的实例化个数,达到控制椭圆弧分段数,使绘制所需的空间复杂度仅与椭圆弧的个数有关,而与分段数无关的目的。
此外,在OpenGL(Open Graphics Library,开放图形库)等图形API中,通过采用几何着色器,可以令调用绘制命令时的输入图元与该次实际绘制的图元不一致。因此,本发明实施例在绘制椭圆弧时,可通过索引绘制,直接获取到所需的椭圆弧数据,避免耗时的纹理读取操作。基于索引绘制,以点图元作为输入,令一个点代表一个分段,并在几何着色器中将其生成为真正需要绘制的线图元或三角形图元。从而无需再考虑在顶点着色器中如何区分一个分段前后端点的问题。
结合前面论述内容,参照图1,示出了本发明实施例提供的一种椭圆弧实时平滑绘制优化方法的步骤流程图,具体可以包括以下步骤:
步骤101,获取预设椭圆弧分段数列表以及多个待分段椭圆弧,并将所述多个待分段椭圆弧按照索引顺序上传至第一公共缓冲区;
在进行实际绘制处理之前,需要先将待分段椭圆弧的分段和绘制所需数据,如长短轴向量、圆心坐标、起始角、终止角等该待分段椭圆弧对应的绘制数据,上传至GPU端的一个公共缓冲区中。椭圆弧数据按照索引顺序排列,每个椭圆弧占用的空间大小完全相同。其中,索引顺序指按顺序密集排列,索引指的是每个待分段椭圆弧的数组下标。
因此,可以在GPU段先构建一个第一公共缓冲区,用以保存待分段椭圆弧的绘制数据。
接着可以预定义一系列的椭圆弧分段数,作为多个预设分段数目,并将多个预设分段数目以椭圆弧分段数列表形式进行保存。其中,每一预设分段数目的值为2的正整数次幂,如可以设置为32或者64。令一个待分段椭圆弧的实际分段数,只能为这些预定义分段数目中的某个值。
从而通过预定义离散分段数,并将其作为一个待分段椭圆弧的实际分段数,能够在一次绘制中,实现同步且仅需绘制相同分段数的椭圆弧。如在一次绘制中,同步绘制分段数均为32的多个椭圆弧。
预先定义好一系列可用的分段数目之后,还需要为每个预定义分段数目新建一个数组,收集使用该分段数的椭圆弧的索引。收集索引,指根据映射处理后获得的实际分段数,将原本的椭圆弧数组,使用记录索引的方式分为几个不同数组。
在具体的实现中,可以针对每一预设分段数目新建一个数组,用以收集待分段椭圆弧的索引。其中,待分段椭圆弧的实际分段数与预设分段数目的数值相同。
同时,还需要为每个预定义分段数目新建一个GPU端的公共缓冲区,以在实际绘制过程中,将每帧收集到的索引数据实时上传至该缓冲区。具体地,可以针对每一预设分段数目新建一个第二公共缓冲区,用以缓存每帧收集到的待分段椭圆弧的实时索引数据。
通过上述方式,在绘制过程中,实际上采用了索引缓冲对象(Element BufferObject,EBO)方式进行数据存储。采用这种方式,可以避免数据的重复上传。例如,假设两帧之间的椭圆弧分段数并未发生改变,则可以直接绘制。若存在区别,每帧收集到的索引数据在上传到缓冲区时,会覆盖掉上一帧的索引数据,因此也并不会额外增加新的内存使用,从而使得每个椭圆弧占用的空间大小完全相同。而假设不预先建立公共缓冲区,相当于不论每帧数据是否发生改变,都要进行一次上传操作,容易造成数据冗余,浪费资源内存,同时降低绘制效率。
步骤102,根据当前摄像机参数计算每一所述待分段椭圆弧的分段数;
结合前述内容可知,每一个待分段椭圆弧对应了一组绘制数据(如长短轴向量、圆心坐标、起始角、终止角等)。结合待分段椭圆弧的分段数实际计算方式,当前摄像机参数主要可以包括当前屏幕的长宽所代表的世界空间距离。则在具体的实现中,根据当前摄像机参数计算每一待分段椭圆弧的分段数,可以为:
针对每一待分段椭圆弧,根据当前屏幕的长宽所代表的世界空间距离,以及绘制数据,通过如下公式,计算待分段椭圆弧的分段数:
其中,表示计算出的待分段椭圆弧的分段数;n表示当屏幕的短边代表的世界距离为1时,直径为1的圆的分段数,为一个预定义值;/>表示待分段椭圆弧起始角和终止角之间的差值;l表示待分段椭圆弧的长轴长度;dw、dh分别表示当前屏幕的长宽所代表的世界空间距离;min表示最小值求解。其中,本步骤中采用开根号方式进行计算,是为了防止分段数随屏幕缩放倍数和椭圆大小的改变而变化得过于剧烈。
步骤103,针对每一所述待分段椭圆弧,将所述分段数映射至所述预设椭圆弧分段数列表,获得所述待分段椭圆弧对应的实际分段数;
当通过上述计算方式,在CPU端结合当前的摄像机参数计算出每个待分段椭圆弧的分段数之后,可以将其向上映射至预定义的椭圆弧分段数列表中的某个值。其中,基于预定义的分段数目均为2的正整数次幂,因此可通过映射方式获得待分段椭圆弧映射后的实际分段数。同时,可以设置一个分段最大值,防止分段数过多。
结合前述内容可知,预设椭圆弧分段数列表包含多个预设分段数目,则在具体的实现中,将分段数映射至预设椭圆弧分段数列表,获得待分段椭圆弧对应的实际分段数,可以为:
通过如下公式,将分段数映射至预设椭圆弧分段数列表,获得待分段椭圆弧对应的实际分段数:
其中,经过映射后的实际分段数与多个预设分段数目中的其中一个数值相等;表示待分段椭圆弧映射后的实际分段数;2的k次幂为多个预设分段数目中的最大值。
可以理解的是,对于待分段椭圆弧的分段数,在映射前是任意整数值,如60,映射后则变成了预定义的几个数值之一,如64。一次实例化绘制需要要求同一第二公共缓冲区中的所有椭圆弧分段数一致。因此,如果没有进行映射处理,分段数无法保持一致。
步骤104,将实际分段数相同的待分段椭圆弧作为目标绘制椭圆弧,并将各个所述目标绘制椭圆弧所对应的实时索引数据上传至同一个第二公共缓冲区,每一所述第二公共缓冲区对应一个预设分段数目;
在对所有待分段椭圆弧进行映射处理后,接着可以将实际分段数一致的所有待分段椭圆弧均作为目标绘制椭圆弧,并放到一个分段数相同的数组中。示例性地,假设有五个待分段椭圆弧,分别为弧0、弧1、弧2、弧3、弧4、弧5(数字0至5为各个待分段椭圆弧的索引)。通过映射之后,这五个待分段椭圆弧各自分段数分别为:64、64、32、128、32、64。则分段数为32的数组1所对应的椭圆弧索引为2、4,分段数为64的数组2所对应的椭圆弧索引为0、1、6,分段数为128的数组3所对应的椭圆弧索引为3。接着可以将索引为2、4的椭圆弧的实时索引数据上传至分段数为32所对应的公共缓冲区1,将索引为0、1、6的椭圆弧的实时索引数据上传至分段数为64所对应的公共缓冲区2,将索引为3的椭圆弧的实时索引数据上传至分段数为128所对应的公共缓冲区3。
步骤105,针对每一所述预设分段数目调用一次绘制指令,通过索引绘制方式,对各个所述目标绘制椭圆弧同时进行实例化绘制,并输出绘制结果。
在进行绘制时,为每个预定义的分段数目调用一次绘制命令,使用索引绘制方式,以点作为输入图元,因此每个椭圆弧的索引即为一个输入点,同时进行实例化绘制。此时,由于采用实例化来表示分段数,因而无需再向GPU端上传分段数据,而只需每帧上传索引数据,因此在椭圆弧个数不变的情况下,无论如何变换视口,都不会影响显存占有量。
在具体的实现中,通过索引绘制方式,对各个目标绘制椭圆弧同时进行实例化绘制,并输出绘制结果,可以为:分别将各个目标绘制椭圆弧的索引作为一个输入点,以点作为输入图元,通过索引绘制方式,同时对各个目标绘制椭圆弧同时进行实例化绘制;在椭圆弧的绘制过程中,将目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,并根据比较结果,选取预设绘制方式进行实例化绘制,输出绘制结果。
可以理解的是,对于实际分段数相同的椭圆弧而言,一次实例化绘制所有的椭圆弧分段数是相同的。在进行绘制时,相当于将需要绘制的分段数目“告诉”GPU,GPU可以自动将该值应用到实际分段数相同的所有椭圆弧上。在这个过程中,严格来讲也存在数据上传动作,但此处上传的只是一个数值,其和渲染命令同步上传,并不会产生额外开销。
此外,为了进一步优化绘制效率,避免无用运算,本发明实施例还根据当前的分段数目,在GPU端进行了不同的处理。
作为一种可能出现的情况,当分段数目小于等于一个预定义阈值(如4096)时,实例化个数等于预定义的分段数目。此时可以在顶点着色器中使用实例化ID(以OpenGL为例,gl_InstanceID标记了当前实例是一个绘制指令中的第几个实例)获取当前应绘制的是第几个分段,据此计算出该分段的绘制数据(起止点的坐标等),并在几何着色器中将点图元转化为实际输出的线图元或三角形图元。
则具体地,将目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,并根据比较结果,选取预设绘制方式进行实例化绘制,输出绘制结果,可以为:将目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,当目标绘制椭圆弧的实际分段数小于等于预设分段阈值时,实际分段数等于第一实例化个数;在顶点着色器中,通过第一实例化个数的实例化ID,获取每个实例对应的目标绘制椭圆弧当前绘制分段的第一分段绘制数据;根据第一分段绘制数据,在几何着色器中将点图元转化为实际输出的线图元或三角形图元。
作为另一种可能出现的情况,当分段数目大于预定义阈值时,可以认为大部分椭圆弧将位于视口外,不会被绘制。此时可以进行GPU剔除操作,并令实例化个数等于预设分段数目除于某个固定数值m(一般取64)。在这种情况下,一个实例将代表m个分段数,即第i个实例将代表第i*m+1到第(i+1)*m的m个分段。通常而言,放大倍数越高,分段数越大,视口中的椭圆弧越少,对于固定数值m,可以进行手动调整,一般设置为一个较大数值。
具体地,在分段数目大于预定义阈值情况下,将目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,并根据比较结果,选取预设绘制方式进行实例化绘制,输出绘制结果的过程,可以通过执行如下子步骤S1至S5实现:
步骤S1:将目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,当目标绘制椭圆弧的实际分段数大于预设分段阈值时,根据实际分段数以及预设分段数值,计算第二实例化个数;
步骤S2:在顶点着色器中,根据目标绘制椭圆弧的绘制数据,计算目标绘制椭圆弧的OBB包围盒以及内接菱形,目标绘制椭圆弧位于内接菱形的外部,同时位于OBB包围盒的内部;
在顶点着色器中,可以采用椭圆弧的长短轴向量和圆心坐标,计算出椭圆弧的OBB包围盒和内接菱形,该椭圆弧一定位于内接菱形的外部,而在包围盒的内部。
步骤S3:将构成OBB包围盒以及内接菱形的点位映射至屏幕空间,计算屏幕空间下OBB包围盒以及内接菱形与视口正方形之间的位置关系,并根据位置关系,剔除目标绘制椭圆弧中符合预设剔除要求的绘制分段,获得剔除后绘制椭圆弧;
将构成椭圆弧OBB包围盒和内接菱形的8个点映射至屏幕空间,计算二者与视口正方形之间的位置关系,并根据下述要求进行剔除操作:
1、当视口正方形完全位于内接菱形的内部时,不需要绘制;
2、当OBB包围盒与视口正方形没有相交区域时,不需要绘制。
也就是说,只有当“视口正方形”和“内接菱形和OBB包围盒中间的区域”相交时,才需要绘制。
步骤S4:在几何着色器中,通过第二实例化个数的实例化ID,获取每个实例对应的剔除后绘制椭圆弧中所有绘制分段的第二分段绘制数据;
步骤S5:根据第二分段绘制数据,在几何着色器中将点图元转化为实际输出的线图元或三角形图元。
在几何着色器中,根据实例化ID对通过剔除的椭圆弧进行分段操作,计算出该实例代表的所有分段所需的绘制数据,并以线图元或三角形图元的方式进行输出。
为使本领域技术人员更好地进行理解,以分段数目64,固定数值m=64为例进行示例性说明。假设原本有8192个实例,超过预定义的分段阈值数目,此时可以先除以64,变为128个实例,每个实例再在几何着色器中按照分段数目分为64段。通过这种方式,也可以降低后续剔除操作的运算量。比如在进行分段数调整之前,需要8192次剔除运算,进行调整之后,仅需128次。
需要说明的是,为使本领域技术人员更好地对类型相同但实际指向意义不同的数据进行区分,本发明实施例中对部分技术特征采用了第一,第二进行区分说明,第一,第二仅作为数据区分使用,并无其他特殊含义,可以理解的是,本发明对此不作限制。
在本发明实施例中,提出了一种硬件加速下利用实例化与GPU剔除,以节约显存与内存数据,支持实时缩放的椭圆弧快速实时平滑绘制方法。首先利用GPU的实例化个数表示椭圆弧分段数目,让每帧只需实时上传椭圆弧的索引数据,而无需上传空间复杂度更高的分段数据。同时,设置一个椭圆弧分段数的阈值,当一个椭圆弧的实际分段数小于等于该阈值时,令一个实例代表一个分段,直接在GPU中分段并完成绘制;当一个椭圆弧的实际分段数大于该阈值时,令一个实例代表固定的多个分段,并先在顶点着色器中进行剔除操作,而在之后的几何着色器中则根据剔除结果,再决定是否进行分段和绘制操作。采用本发明实施例所提供技术方案,通过在CPU端实时计算和离散化椭圆弧分段数,并收集索引数据,当分段数较多时,则利用椭圆弧的OBB包围盒和内接菱形进行剔除处理,可以大幅降低绘制的空间消耗,并明显提高绘制速度,从而进一步优化CAD平台上椭圆弧较多场景下的性能表现。
为了更好地进行说明,参照图2,示出了本发明实施例提供的一种椭圆弧实时平滑绘制优化方法的整体流程示意图。需要指出的是,本实施例仅以椭圆弧实时平滑绘制优化的大体流程进行简要性说明,各个步骤的具体实现过程可参照前述实施例中的相关内容进行参照理解即可,此处不作赘述,可以理解的是,本发明对此不作限制。
(1)首先在GPU端新建一个第一公共缓冲区;预定义一系列的椭圆弧分段数目,以列表形式保存,并针对每一个预设分段数目新建一个数组(用以收集待分段椭圆弧的索引,待分段椭圆弧的实际分段数与该预设分段数目一致)以及一个第二公共缓冲区(用以缓存每帧收集的实际分段数相同的待分段椭圆弧的实时索引数据);
(2)获取多个待分段椭圆弧(每个待分段椭圆弧对应一组绘制数据),并将多个待分段椭圆弧(绘制数据)按照索引顺序排列并上传至GPU的第一公共缓冲区;
(3)根据当前摄像机参数以及绘制数据,计算出每个待分段椭圆弧的分段数,并将其向上映射至分段数列表中的某个值,获得实际分段数;
(4)将实际分段数相同的待分段椭圆弧作为目标绘制椭圆弧,并将每帧收集到的所有目标绘制椭圆弧的实时索引数据上传至GPU的第二公共缓冲区;
(5)针对每一预设分段数目调用一次绘制指令,以索引作为输入点图元,采用实例化并行索引绘制具有相同分段数的所有目标绘制椭圆弧;
(6)在绘制过程中,判断目标绘制椭圆弧的分段数目是否小于等于预设分段阈值;
(7-1)若是,则实例化个数等于预设分段数目(即实际分段数),在顶点着色器中计算出当前分段所需的绘制数据,接着在几何着色器中将点图元转化为实际输出的线图元或三角形图元;
(7-2-1)若否,则实例化个数等于预设分段数目除以某个固定数值,在顶点着色器中计算出椭圆弧OBB包围盒以及内接菱形,接着在顶点着色器中计算屏幕空间下二者与视口正方形之间的位置关系,并据此进行剔除操作;
(7-2-2)在剔除操作过程中,根据预设的剔除要求,判断剔除是否通过,若是,则在几何着色器中计算该实例代表的所有分段所需的绘制数据,并以线图元或三角形图元的方式输出,若否,则不绘制该椭圆弧。
参照图3,示出了本发明实施例提供的一种椭圆弧实时平滑绘制优化装置的结构框图,具体可以包括:
待分段椭圆弧数据上传模块301,用于获取预设椭圆弧分段数列表以及多个待分段椭圆弧,并将所述多个待分段椭圆弧按照索引顺序上传至第一公共缓冲区;
分段数计算模块302,用于根据当前摄像机参数计算每一所述待分段椭圆弧的分段数;
实际分段数映射计算模块303,用于针对每一所述待分段椭圆弧,将所述分段数映射至所述预设椭圆弧分段数列表,获得所述待分段椭圆弧对应的实际分段数;
实时索引数据上传模块304,用于将实际分段数相同的待分段椭圆弧作为目标绘制椭圆弧,并将各个所述目标绘制椭圆弧所对应的实时索引数据上传至同一个第二公共缓冲区,每一所述第二公共缓冲区对应一个预设分段数目;
实例化绘制模块305,用于针对每一所述预设分段数目调用一次绘制指令,通过索引绘制方式,对各个所述目标绘制椭圆弧同时进行实例化绘制,并输出绘制结果。
在一种可选实施例中,所述当前摄像机参数包括当前屏幕的长宽所代表的世界空间距离,所述待分段椭圆弧对应一组绘制数据,所述分段数计算模块302具体用于:
针对每一所述待分段椭圆弧,根据所述当前屏幕的长宽所代表的世界空间距离,以及所述绘制数据,通过如下公式,计算所述待分段椭圆弧的分段数:
其中,表示计算出的待分段椭圆弧的分段数;n表示当屏幕的短边代表的世界距离为1时,直径为1的圆的分段数,为一个预定义值;/>表示所述待分段椭圆弧起始角和终止角之间的差值;l表示所述待分段椭圆弧的长轴长度;dw、dh分别表示当前屏幕的长宽所代表的世界空间距离;min表示最小值求解。
在一种可选实施例中,所述预设椭圆弧分段数列表包含多个预设分段数目,所述实际分段数映射计算模块303具体用于:
通过如下公式,将所述分段数映射至所述预设椭圆弧分段数列表,获得所述待分段椭圆弧对应的实际分段数:
其中,经过映射后的实际分段数与所述多个预设分段数目中的其中一个数值相等;表示所述待分段椭圆弧映射后的实际分段数;2的k次幂为所述多个预设分段数目中的最大值。
在一种可选实施例中,所述实例化绘制模块305包括:
输入点定义模块,用于分别将各个所述目标绘制椭圆弧的索引作为一个输入点,以点作为输入图元,通过索引绘制方式,同时对各个所述目标绘制椭圆弧同时进行实例化绘制;
实例化绘制子模块,用于在椭圆弧的绘制过程中,将所述目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,并根据比较结果,选取预设绘制方式进行实例化绘制,输出绘制结果。
在一种可选实施例中,所述实例化绘制子模块包括:
第一实例化个数确定模块,用于将所述目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,当所述目标绘制椭圆弧的实际分段数小于等于预设分段阈值时,所述实际分段数等于第一实例化个数;
第一分段绘制数据获取模块,用于在顶点着色器中,通过所述第一实例化个数的实例化ID,获取每个实例对应的所述目标绘制椭圆弧当前绘制分段的第一分段绘制数据;
第一点图元转化绘制模块,用于根据所述第一分段绘制数据,在几何着色器中将点图元转化为实际输出的线图元或三角形图元。
在一种可选实施例中,所述实例化绘制子模块包括:
第二实例化个数计算模块,用于将所述目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,当所述目标绘制椭圆弧的实际分段数大于预设分段阈值时,根据所述实际分段数以及预设分段数值,计算第二实例化个数;
OBB包围盒及内接菱形计算模块,用于在顶点着色器中,根据所述目标绘制椭圆弧的绘制数据,计算所述目标绘制椭圆弧的OBB包围盒以及内接菱形,所述目标绘制椭圆弧位于所述内接菱形的外部,同时位于所述OBB包围盒的内部;
绘制分段剔除模块,用于将构成所述OBB包围盒以及所述内接菱形的点位映射至屏幕空间,计算屏幕空间下所述OBB包围盒以及所述内接菱形与视口正方形之间的位置关系,并根据位置关系,剔除所述目标绘制椭圆弧中符合预设剔除要求的绘制分段,获得剔除后绘制椭圆弧;
第二分段绘制数据获取模块,用于在几何着色器中,通过所述第二实例化个数的实例化ID,获取每个实例对应的所述剔除后绘制椭圆弧中所有绘制分段的第二分段绘制数据;
第二点图元转化绘制模块,用于根据所述第二分段绘制数据,在几何着色器中将点图元转化为实际输出的线图元或三角形图元。
在一种可选实施例中,所述装置还包括:
第一公共缓冲区构建模块,用于构建一个第一公共缓冲区,用以保存待分段椭圆弧的绘制数据;
椭圆弧分段数预定义模块,用于预定义一系列的椭圆弧分段数,作为多个预设分段数目,并将所述多个预设分段数目以椭圆弧分段数列表形式进行保存,每一所述预设分段数目的值为2的正整数次幂;
数组构建模块,用于针对每一所述预设分段数目新建一个数组,用以收集待分段椭圆弧的索引,所述待分段椭圆弧的实际分段数与所述预设分段数目的数值相同;
第二公共缓冲区构建模块,用于针对每一所述预设分段数目新建一个第二公共缓冲区,用以缓存每帧收集到的待分段椭圆弧的实时索引数据。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见前述方法实施例的部分说明即可。
本发明实施例还提供了一种电子设备,设备包括处理器以及存储器:
存储器用于存储程序代码,并将程序代码传输给处理器;
处理器用于根据程序代码中的指令执行本发明任一实施例的椭圆弧实时平滑绘制优化方法。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行本发明任一实施例的椭圆弧实时平滑绘制优化方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种椭圆弧实时平滑绘制优化方法,其特征在于,包括:
获取预设椭圆弧分段数列表以及多个待分段椭圆弧,并将所述多个待分段椭圆弧按照索引顺序上传至第一公共缓冲区;
根据当前摄像机参数计算每一所述待分段椭圆弧的分段数;
针对每一所述待分段椭圆弧,将所述分段数映射至所述预设椭圆弧分段数列表,获得所述待分段椭圆弧对应的实际分段数;
将实际分段数相同的待分段椭圆弧作为目标绘制椭圆弧,并将各个所述目标绘制椭圆弧所对应的实时索引数据上传至同一个第二公共缓冲区,每一所述第二公共缓冲区对应一个预设分段数目;
针对每一所述预设分段数目调用一次绘制指令,通过索引绘制方式,对各个所述目标绘制椭圆弧同时进行实例化绘制,并输出绘制结果。
2.根据权利要求1所述的椭圆弧实时平滑绘制优化方法,其特征在于,所述当前摄像机参数包括当前屏幕的长宽所代表的世界空间距离,所述待分段椭圆弧对应一组绘制数据,所述根据当前摄像机参数计算每一所述待分段椭圆弧的分段数,包括:
针对每一所述待分段椭圆弧,根据所述当前屏幕的长宽所代表的世界空间距离,以及所述绘制数据,通过如下公式,计算所述待分段椭圆弧的分段数:
其中,表示计算出的待分段椭圆弧的分段数;n表示当屏幕的短边代表的世界距离为1时,直径为1的圆的分段数,为一个预定义值;/>表示所述待分段椭圆弧起始角和终止角之间的差值;l表示所述待分段椭圆弧的长轴长度;dw、dh分别表示当前屏幕的长宽所代表的世界空间距离;min表示最小值求解。
3.根据权利要求2所述的椭圆弧实时平滑绘制优化方法,其特征在于,所述预设椭圆弧分段数列表包含多个预设分段数目,所述将所述分段数映射至所述预设椭圆弧分段数列表,获得所述待分段椭圆弧对应的实际分段数,包括:
通过如下公式,将所述分段数映射至所述预设椭圆弧分段数列表,获得所述待分段椭圆弧对应的实际分段数:
其中,经过映射后的实际分段数与所述多个预设分段数目中的其中一个数值相等;表示所述待分段椭圆弧映射后的实际分段数;2的k次幂为所述多个预设分段数目中的最大值。
4.根据权利要求2所述的椭圆弧实时平滑绘制优化方法,其特征在于,所述通过索引绘制方式,对各个所述目标绘制椭圆弧同时进行实例化绘制,并输出绘制结果,包括:
分别将各个所述目标绘制椭圆弧的索引作为一个输入点,以点作为输入图元,通过索引绘制方式,同时对各个所述目标绘制椭圆弧同时进行实例化绘制;
在椭圆弧的绘制过程中,将所述目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,并根据比较结果,选取预设绘制方式进行实例化绘制,输出绘制结果。
5.根据权利要求4所述的椭圆弧实时平滑绘制优化方法,其特征在于,所述将所述目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,并根据比较结果,选取预设绘制方式进行实例化绘制,输出绘制结果,包括:
将所述目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,当所述目标绘制椭圆弧的实际分段数小于等于预设分段阈值时,所述实际分段数等于第一实例化个数;
在顶点着色器中,通过所述第一实例化个数的实例化ID,获取每个实例对应的所述目标绘制椭圆弧当前绘制分段的第一分段绘制数据;
根据所述第一分段绘制数据,在几何着色器中将点图元转化为实际输出的线图元或三角形图元。
6.根据权利要求4所述的椭圆弧实时平滑绘制优化方法,其特征在于,所述将所述目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,并根据比较结果,选取预设绘制方式进行实例化绘制,输出绘制结果,包括:
将所述目标绘制椭圆弧的实际分段数与预设分段阈值进行比较,当所述目标绘制椭圆弧的实际分段数大于预设分段阈值时,根据所述实际分段数以及预设分段数值,计算第二实例化个数;
在顶点着色器中,根据所述目标绘制椭圆弧的绘制数据,计算所述目标绘制椭圆弧的OBB包围盒以及内接菱形,所述目标绘制椭圆弧位于所述内接菱形的外部,同时位于所述OBB包围盒的内部;
将构成所述OBB包围盒以及所述内接菱形的点位映射至屏幕空间,计算屏幕空间下所述OBB包围盒以及所述内接菱形与视口正方形之间的位置关系,并根据位置关系,剔除所述目标绘制椭圆弧中符合预设剔除要求的绘制分段,获得剔除后绘制椭圆弧;
在几何着色器中,通过所述第二实例化个数的实例化ID,获取每个实例对应的所述剔除后绘制椭圆弧中所有绘制分段的第二分段绘制数据;
根据所述第二分段绘制数据,在几何着色器中将点图元转化为实际输出的线图元或三角形图元。
7.根据权利要求1至6任一项所述的椭圆弧实时平滑绘制优化方法,其特征在于,还包括:
构建一个第一公共缓冲区,用以保存待分段椭圆弧的绘制数据;
预定义一系列的椭圆弧分段数,作为多个预设分段数目,并将所述多个预设分段数目以椭圆弧分段数列表形式进行保存,每一所述预设分段数目的值为2的正整数次幂;
针对每一所述预设分段数目新建一个数组,用以收集待分段椭圆弧的索引,所述待分段椭圆弧的实际分段数与所述预设分段数目的数值相同;
针对每一所述预设分段数目新建一个第二公共缓冲区,用以缓存每帧收集到的待分段椭圆弧的实时索引数据。
8.一种椭圆弧实时平滑绘制优化装置,其特征在于,包括:
待分段椭圆弧数据上传模块,用于获取预设椭圆弧分段数列表以及多个待分段椭圆弧,并将所述多个待分段椭圆弧按照索引顺序上传至第一公共缓冲区;
分段数计算模块,用于根据当前摄像机参数计算每一所述待分段椭圆弧的分段数;
实际分段数映射计算模块,用于针对每一所述待分段椭圆弧,将所述分段数映射至所述预设椭圆弧分段数列表,获得所述待分段椭圆弧对应的实际分段数;
实时索引数据上传模块,用于将实际分段数相同的待分段椭圆弧作为目标绘制椭圆弧,并将各个所述目标绘制椭圆弧所对应的实时索引数据上传至同一个第二公共缓冲区,每一所述第二公共缓冲区对应一个预设分段数目;
实例化绘制模块,用于针对每一所述预设分段数目调用一次绘制指令,通过索引绘制方式,对各个所述目标绘制椭圆弧同时进行实例化绘制,并输出绘制结果。
9.一种电子设备,其特征在于,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-7任一项所述的椭圆弧实时平滑绘制优化方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行权利要求1-7任一项所述的椭圆弧实时平滑绘制优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410524654.8A CN118115350A (zh) | 2024-04-29 | 2024-04-29 | 椭圆弧实时平滑绘制优化方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410524654.8A CN118115350A (zh) | 2024-04-29 | 2024-04-29 | 椭圆弧实时平滑绘制优化方法、装置、电子设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118115350A true CN118115350A (zh) | 2024-05-31 |
Family
ID=91219573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410524654.8A Pending CN118115350A (zh) | 2024-04-29 | 2024-04-29 | 椭圆弧实时平滑绘制优化方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118115350A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170178401A1 (en) * | 2015-12-22 | 2017-06-22 | Nvidia Corporation | Distributed index fetch, primitive assembly, and primitive batching |
US20210312585A1 (en) * | 2020-04-02 | 2021-10-07 | Intel Corporation | Method and apparatus for buffer sharing |
CN113706659A (zh) * | 2021-08-18 | 2021-11-26 | 江苏红豆工业互联网有限公司 | 一种基于服装四分椭圆弧线的离散化参数绘图方法 |
US20220084265A1 (en) * | 2020-09-11 | 2022-03-17 | Unity IPR ApS | Rendering antialiased curves using distance to circle arcs |
CN116664734A (zh) * | 2022-10-19 | 2023-08-29 | 荣耀终端有限公司 | 环形图的显示方法、电子设备及可读存储介质 |
CN117541461A (zh) * | 2024-01-10 | 2024-02-09 | 广州中望龙腾软件股份有限公司 | 一种弧线缩放绘制方法、装置、设备和介质 |
-
2024
- 2024-04-29 CN CN202410524654.8A patent/CN118115350A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170178401A1 (en) * | 2015-12-22 | 2017-06-22 | Nvidia Corporation | Distributed index fetch, primitive assembly, and primitive batching |
US20210312585A1 (en) * | 2020-04-02 | 2021-10-07 | Intel Corporation | Method and apparatus for buffer sharing |
US20220084265A1 (en) * | 2020-09-11 | 2022-03-17 | Unity IPR ApS | Rendering antialiased curves using distance to circle arcs |
CN113706659A (zh) * | 2021-08-18 | 2021-11-26 | 江苏红豆工业互联网有限公司 | 一种基于服装四分椭圆弧线的离散化参数绘图方法 |
CN116664734A (zh) * | 2022-10-19 | 2023-08-29 | 荣耀终端有限公司 | 环形图的显示方法、电子设备及可读存储介质 |
CN117541461A (zh) * | 2024-01-10 | 2024-02-09 | 广州中望龙腾软件股份有限公司 | 一种弧线缩放绘制方法、装置、设备和介质 |
Non-Patent Citations (3)
Title |
---|
YUN-CEN HUANG ET AL: "Feature-Adaptive Rendering of Loop Subdivision Surfaces on Modern GPUs", JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY, vol. 29, no. 6, 30 November 2014 (2014-11-30), pages 1014 - 1025 * |
李莉娅;陈福民;周海波;: "基于GPU的几何体实例化研究", 计算机应用与软件, no. 11, 15 November 2008 (2008-11-15), pages 222 - 223 * |
王结臣;李永全;钱晨晖;: "GIS中弧段数据结构的扩展与应用", 南京大学学报(自然科学版), no. 01, 30 January 2008 (2008-01-30), pages 84 - 91 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11995854B2 (en) | Mesh reconstruction using data-driven priors | |
US8725466B2 (en) | System and method for hybrid solid and surface modeling for computer-aided design environments | |
US7463261B1 (en) | Three-dimensional image compositing on a GPU utilizing multiple transformations | |
CN112562069B (zh) | 三维模型的构造方法、装置、设备和存储介质 | |
CN105678683A (zh) | 一种三维模型的二维存储方法 | |
US10089782B2 (en) | Generating polygon vertices using surface relief information | |
US10783685B2 (en) | Banner image generation | |
US9286657B1 (en) | Efficient image processing using dynamically sized tiles | |
US11842443B2 (en) | Rendering three-dimensional objects utilizing sharp tessellation | |
CN111597845A (zh) | 一种二维码检测方法、装置、设备及可读存储介质 | |
JPH08297737A (ja) | 任意図形クリッピング方法および装置 | |
CN117541461B (zh) | 一种弧线缩放绘制方法、装置、设备和介质 | |
CN109377552B (zh) | 图像遮挡计算方法、装置、计算设备及存储介质 | |
KR20210061119A (ko) | 큰 규모 분산 행렬 곱 처리 방법 및 그 장치 | |
CN117765149A (zh) | 一种基于视椎体行动预测的大规模场景实时交互渲染方法 | |
CN118115350A (zh) | 椭圆弧实时平滑绘制优化方法、装置、电子设备及介质 | |
JP2008262493A (ja) | 情報処理装置および情報処理方法、プログラム、並びに、記録媒体 | |
JP2015158737A (ja) | 画像処理装置及び画像処理方法 | |
US10271097B2 (en) | Dynamic resolution determination | |
CN115935909A (zh) | 一种文件生成方法、装置及电子设备 | |
US20170270632A1 (en) | Caching Method Of Graphic Processing Unit | |
US11132762B2 (en) | Content aware image fitting | |
KR101857592B1 (ko) | 캐시를 가지고 절차 이미지를 생성하기 위한 장치 및 방법 | |
CN117744186B (zh) | Cad光栅化方法、装置、计算机设备和存储介质 | |
CN115239895B (zh) | Gis水环境3d地图的海量数据加载及优化渲染方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |