高版本OpenGL函数适配低版本应用程序的方法、装置及介质制造方法及图纸

技术编号:35176035 阅读:18 留言:0更新日期:2022-10-12 17:42
本发明专利技术实施例公开了一种高版本OpenGL函数适配低版本应用程序的方法、装置及介质,该方法可以包括:在应用程序启动前预加载动态库文件;其中,所述动态库文件包括由高版本OpenGL函数模拟所得到的在高版本OpenGL函数中已被摒弃的低版本OpenGL函数;在所述应用程序运行过程中,相应于被执行的OpenGL函数在高版本OpenGL函数库中不存在,则调用所述动态库文件中所模拟的且与所述被执行的OpenGL函数同名的低版本OpenGL函数;相应于所述被执行的OpenGL函数在所述高版本OpenGL函数库中存在,则直接调用高版本OpenGL函数库中与所述被执行的OpenGL函数同名的OpenGL函数。行的OpenGL函数同名的OpenGL函数。行的OpenGL函数同名的OpenGL函数。

【技术实现步骤摘要】
高版本OpenGL函数适配低版本应用程序的方法、装置及介质


[0001]本专利技术实施例涉及计算机图形编程
,尤其涉及一种高版本OpenGL函数适配低版本应用程序的方法、装置及介质。

技术介绍

[0002]开放图形库或者开放式图形库(Open Graphics Library,OpenGL)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(Application Programming Interface,API)。所述应用程序编程接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维图像,OpenGL常用于CAD、虚拟实境、科学可视化程序和电子游戏开发,作为独立于操作系统的开放的三维图形的软件开发包,在其基础上开发的应用程序能够简单方便的移植于各种平台。
[0003]随着OpenGL版本的升级,当前图形开发中使用的OpenGL版本越来越高,从最初的1.0已经演进到最新的4.6版本。开发方式也从最初的纯C/C++编程转变为C/C++混合着色器Shader编程。在OpenGL 3.3版本后,OpenGL图形管线已由固定管线转变为可编程管线。固定管线编程方式相对比较简单,可编程管线编程复杂很多,但是后者可以实现前者实现不了的一些渲染效果,而且在性能上相对前者也有一定提升。但是目前基于OpenGL开发的应用程序规模相当庞大,小部分使用的是OpenGL 3.3以后的高版本开发的,大部分使用的还是OpenGL 3.3之前版本开发的,因此对于在OpenGL 3.3之前版本开发的应用程序,无法在仅支持OpenGL 3.3及之后的环境上运行。如果在使用OpenGL 3.3之后版本的接口上重写目标应用程序,需要修改大量的低版本OpenGL应用程序源码,并且若有很多低版本OpenGL应用程序源码,但是修改方式又不能通用的情况下,不能批量处理,则需要对低版本OpenGL应用程序源码一一单独处理,费时费力并且适配效率低下。

技术实现思路

[0004]有鉴于此,本专利技术实施例期望提供一种高版本OpenGL函数适配低版本应用程序的方法,通过使用高版本OpenGL函数模拟OpenGL 3.3之前被摒弃的低版本OpenGL函数的方式,能够支持所有基于低版本OpenGL开发的应用程序可以在高版本OpenGL平台运行,并且不需要在高版本OpenGL中重写接口以及修改大量的低版本OpenGL应用程序源码,从而节省开发时间,提高开发效率。
[0005]本专利技术实施例的技术方案是这样实现的:第一方面,本专利技术实施例提供了一种高版本OpenGL函数适配低版本应用程序的方法,包括:在应用程序启动前预加载动态库文件;其中,所述动态库文件包括由高版本OpenGL函数模拟所得到的在高版本OpenGL函数中已被摒弃的低版本OpenGL函数;在所述应用程序运行过程中,相应于被执行的OpenGL函数在高版本OpenGL函数库中不存在,则调用所述动态库文件中所模拟的且与所述被执行的OpenGL函数同名的低版本
OpenGL函数;相应于所述被执行的OpenGL函数在所述高版本OpenGL函数库中存在,则直接调用高版本OpenGL函数库中与所述被执行的OpenGL函数同名的OpenGL函数。
[0006]第二方面,本专利技术实施例提供了一种高版本OpenGL函数适配低版本应用程序的装置,所述装置包括:预加载部分、第一调用部分和第二调用部分;其中,所述预加载部分,经配置为在应用程序启动前预加载动态库文件;其中,所述动态库文件包括由高版本OpenGL函数模拟所得到的在高版本OpenGL函数中已被摒弃的低版本OpenGL函数;所述第一调用部分,经配置为在所述应用程序运行过程中,相应于被执行的OpenGL函数在高版本OpenGL函数库中不存在,则调用所述动态库文件中所模拟的且与所述被执行的OpenGL函数同名的低版本OpenGL函数;所述第二调用部分,经配置为相应于所述被执行的OpenGL函数在所述高版本OpenGL函数库中存在,则直接调用高版本OpenGL函数库中与所述被执行的OpenGL函数同名的OpenGL函数。
[0007]第三方面,本专利技术实施例提供了一种计算设备,所述计算设备包括:通信接口,存储器和处理器;各个组件通过总线系统耦合在一起;其中,所述通信接口,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;所述存储器,用于存储能够在所述处理器上运行的计算机程序;所述处理器,用于在运行所述计算机程序时,执行第一方面所述高版本OpenGL函数适配低版本应用程序的方法的步骤。
[0008]第四方面,本专利技术实施例提供一种计算机存储介质,所述计算机存储介质存储有高版本OpenGL函数适配低版本应用程序的程序,所述程序被至少一个处理器执行时实现第一方面所述高版本OpenGL函数适配低版本应用程序的方法的步骤。
[0009]本专利技术实施例提供了一种高版本OpenGL函数适配低版本应用程序的方法;通过增加一个动态库文件,使得每个在高版本OpenGL函数库中被摒弃的低版本OpenGL函数都通过高版本OpenGL函数进行模拟实现,从而在应用程序运行至需要执行被摒弃的低版本OpenGL函数时,调用动态库文件中的同名函数完成执行,无需对应用程序源码中的被摒弃的低版本OpenGL函数进行改写,并且当动态库文件加载完成后可使得本地的高版本OpenGL函数库能够适配运行各种由低版本OpenGL函数所产生的应用程序,节省了开发时间,提高了应用程序的开发效率和兼容性。
附图说明
[0010]图1为本专利技术实施例提供的计算机系统组成示意图。
[0011]图2为说明图1中的CPU、GPU和存储器的实例实施方案的框图。
[0012]图3为本专利技术实施例提供的固定管线流程示意图。
[0013]图4为本专利技术实施例提供的可编程管线流程示意图。
[0014]图5为本专利技术实施例提供的一种高版本OpenGL函数适配低版本应用程序的方法流程示意图。
[0015]图6为本专利技术实施例提供的一种详细的应用程序调度流程示意图。
[0016]图7为本专利技术实施例提供的一种高版本OpenGL函数适配低版本应用程序的装置组成示意图。
[0017]图8为本专利技术实施例提供的另一种高版本OpenGL函数适配低版本应用程序的装置组成示意图。
具体实施方式
[0018]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述。
[0019]参见图1,其示出了能够实现本专利技术实施例技术方案的计算机系统组成100,需注意,图示的系统是可能的系统的仅一个示例,并且可根据需要在各种系统中的任一系统中实现本专利技术的实施方案。该计算机系统组成100具体可以为任意类型的计算装置,包括且不限于台式计算机、服务器、工作站、膝上计算机、基于计算机的仿真器、无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高版本OpenGL函数适配低版本应用程序的方法,其特征在于,所述方法包括:在应用程序启动前预加载动态库文件;其中,所述动态库文件包括由高版本OpenGL函数模拟所得到的在高版本OpenGL函数中已被摒弃的低版本OpenGL函数;在所述应用程序运行过程中,相应于被执行的OpenGL函数在高版本OpenGL函数库中不存在,则调用所述动态库文件中所模拟的且与所述被执行的OpenGL函数同名的低版本OpenGL函数;相应于所述被执行的OpenGL函数在所述高版本OpenGL函数库中存在,则直接调用高版本OpenGL函数库中与所述被执行的OpenGL函数同名的OpenGL函数。2.根据权利要求1所述方法,其特征在于,所述方法还包括:根据应用程序与本地的高版本OpenGL函数库筛选获得需要由高版本OpenGL函数模拟的低版本OpenGL函数列表;利用高版本OpenGL函数库中的函数,对所述函数列表中的每个低版本OpenGL函数进行模拟,并将模拟得到的低版本OpenGL函数封装为动态库文件。3.根据权利要求2所述方法,其特征在于,所述根据应用程序与本地的高版本OpenGL函数库筛选获得需要由高版本OpenGL函数模拟的低版本OpenGL函数列表,包括:对比应用程序与高版本OpenGL函数库中的函数,将处于应用程序中且高版本OpenGL函数库中不存在的低版本OpenGL函数添加至所述函数列表;或者,预先执行应用程序以通过图形API接口调用高版本OpenGL函数库,将报错信息中的低版本OpenGL函数添加至所述函数列表。4.根据权利要求2所述的方法,其特征在于,所述利用高版本OpenGL函数库中的函数,对所述函数列表中的每个低版本OpenGL函数进行模拟,并将模拟得到的低版本OpenGL函数封装为动态库文件,包括:使用高版本OpenGL函数模拟低版本OpenGL函数前引入默认的顶点着色器和片段着色器的Shader以及其对应的输入、输出参数;根据OpenGL函数所定义的功能,利用高版本OpenGL函数库中的一个或多个函数,对所述函数列表中的每个低版本OpenGL函数进行模拟并使用全局上下文记录模拟过程中高版本OpenGL函数所使用的函数信息;所述函数信息至少包括:函数调用次序、函数调用参数次序;将使用高版本OpenGL函数模拟完成的低版本OpenGL函数列表封装为动态库文件。5.根据权利要求1所述方法,其特征在于,所述在应用程序启动前预加载动态库文件,包括:在应用程序启动前采用LD_PRELOAD方式预加载所述动态库文件...

【专利技术属性】
技术研发人员:杜文华李彪刘伟曹伟
申请(专利权)人:西安芯瞳半导体技术有限公司
类型:发明
国别省市:

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

1