CN109656637A - 跨平台调用OpenGL ES的渲染方法、装置及计算机存储介质 - Google Patents

跨平台调用OpenGL ES的渲染方法、装置及计算机存储介质 Download PDF

Info

Publication number
CN109656637A
CN109656637A CN201811526444.3A CN201811526444A CN109656637A CN 109656637 A CN109656637 A CN 109656637A CN 201811526444 A CN201811526444 A CN 201811526444A CN 109656637 A CN109656637 A CN 109656637A
Authority
CN
China
Prior art keywords
rendering
interface
cdisplay
calling
opengl
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.)
Granted
Application number
CN201811526444.3A
Other languages
English (en)
Other versions
CN109656637B (zh
Inventor
吴伟嘉
徐昌伟
黄仝宇
汪刚
宋兵
宋一兵
侯玉清
刘双广
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gosuncn Technology Group Co Ltd
Original Assignee
Gosuncn Technology Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Gosuncn Technology Group Co Ltd filed Critical Gosuncn Technology Group Co Ltd
Priority to CN201811526444.3A priority Critical patent/CN109656637B/zh
Publication of CN109656637A publication Critical patent/CN109656637A/zh
Application granted granted Critical
Publication of CN109656637B publication Critical patent/CN109656637B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Digital Computer Display Output (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明提供一种跨平台调用OpenGL ES的渲染方法、跨平台调用OpenGL ES的渲染装置及计算机存储介质,所述方法包括:创建GLRenderContext来捕获展示窗口的上下文;调用cDisplay接口并将图像RenderTexture渲染逻辑传入cDisplay接口中,实现OpenGL ES的视频渲染。根据本发明实施例的跨平台调用OpenGL ES的渲染方法,通过将iOS渲染接口抛出由外部调用,可以将视频缓冲及播放速率控制功能交由统一控件控制,而不需要在内部独立维护一套缓冲算法,并且能够绕过苹果公司提供的EAGL限制,让iOS应用支持类似EGL直接渲染的调用方式。

Description

跨平台调用OpenGL ES的渲染方法、装置及计算机存储介质
技术领域
本发明涉及移动设备视频渲染领域,更具体地,涉及一种跨平台调用OpenGL ES的渲染方法、跨平台调用OpenGL ES的渲染装置及计算机存储介质。
背景技术
在当前针对移动设备视频播放功能中,OpenGL ES(OpenGL for EmbeddedSystems)作为一项跨平台且功能完善的图像应用程序接口,是最适合用于移动设备视频渲染备选方案。为保证OpenGL ES的跨平台性,OpenGL ES仅提供图像渲染能力,并不提供与具体平台展现窗口交互的能力,而是提供了与原生平台窗口交互的接口EGL,该接口提供了让OpenGL ES与Windows,Linux,Android等操作系统下的原生窗口间建立联系的能力。但在iOS端,苹果公司使用了另外一套自定义的接口EAGL,EAGL不提供直接访问原生窗口的能力,而是需要通过使用FBO+RBO的方式,并调用原生API:EAGLContext将RBO的内容填充到目标窗口上。这种差异为视频跨平台开发造成一定的困扰,针对这种情况,当前有以下两种解决方案:
1、各个平台各自使用RenderTexture代替Render Buffer Objects(RBO,渲染缓冲对象)在自定义的Fragment Buffer Objects(FBO,帧缓冲对象)上进行渲染并最终将这张texture绘制到默认的FBO上,然后进行swap操作。
2、各个平台使用与iOS EAGL一致的Fragment Buffer objects(FBO)和RenderBuffer Objects进行离屏渲染操作。
目前常用的两种解决方案存在以下缺点:
1、方案1需要各个平台分别维护一套texture绘制代码,增加后期维护工作量,同时需要额外的内存开销,进行多余的绘制和纹理采样操作。
2、方案2在Android平台的GLES2.0下,使用FBO+RBO,没有任何copy和swap/present接口可以将RBO swap到surface窗口,这意味着Android平台需要放弃这种方案使用默认的FBO直接渲染,同样需要单独维护一份代码逻辑。
发明内容
有鉴于此,本发明提供一种跨平台调用OpenGL ES的渲染方法、跨平台调用OpenGLES的渲染装置及计算机存储介质,能够绕过EAGL限制,让iOS应用支持类似EGL直接渲染的调用方式。
为解决上述技术问题,一方面,本发明提供一种跨平台调用OpenGL ES的渲染方法,所述方法包括:创建GLRenderContext来捕获展示窗口的上下文;调用cDisplay接口并将图像RenderTexture渲染逻辑传入cDisplay接口中,实现OpenGL ES的视频渲染。
根据本发明的一些实施例,所述创建GLRenderContext来捕获展示窗口的上下文,包括:编写基于EAGLLayer系统类的渲染环境GLKView;EAGLLayer系统类提供实现渲染图像功能的cDisplay接口,所述cDisplay接口提供一个block参数作为将绘制图像前数据处理的代码块传入接口;将所述cDisplay接口暴露在头文件以由外部方法进行调用。
根据本发明的一些实施例,使用Objective-C++语言编写所述渲染环境GLKView。
根据本发明的一些实施例,所述cDisplay接口通过调用EAGLContext的presentRenderbuffer方法实现渲染图像功能。
根据本发明的一些实施例,图像RenderTexture渲染逻辑通过lambda函数或方法指针传入所述cDisplay接口。
第二方面,本发明实施例提供一种跨平台调用OpenGL ES的渲染装置,包括:获取模块,所述获取模块用于捕获展示窗口的上下文,所述获取模块具有cDisplay接口;调用模块,所述调用模块调用所述cDisplay接口并将图像RenderTexture渲染逻辑传入所述cDisplay接口中,实现OpenGL ES的视频渲染。
根据本发明的一些实施例,所述获取模块包括:编写模块,所述编写模块编写基于EAGLLayer系统类的渲染环境GLKView,EAGLLayer系统类提供实现渲染图像功能的cDisplay接口。
根据本发明的一些实施例,使用Objective-C++语言编写所述渲染环境GLKView。
根据本发明的一些实施例,图像RenderTexture渲染逻辑通过lambda函数或方法指针传入所述cDisplay接口。
第三方面,本发明实施例提供一种计算机存储介质,包括一条或多条计算机指令,所述一条或多条计算机指令在执行时实现如上述实施例所述的方法。
本发明的上述技术方案至少具有如下有益效果之一:
根据本发明实施例的跨平台调用OpenGL ES的渲染方法、跨平台调用OpenGL ES的渲染装置及计算机存储介质,通过将iOS渲染接口抛出由外部调用,可以将视频缓冲及播放速率控制功能交由统一控件控制,而不需要在内部独立维护一套缓冲算法;由于GLKView类仅提供基础的渲染窗口环境及按照OpenGL接口规范实现了渲染功能,同时GLRenderContext类则提供了GLKView渲染接口的由Objective-C++语言转换为C++语言接口的功能,这两个类功能单一且标准,无需额外进行维护,同时完全与CRender模块解耦,不影响CRender模块功能实现并且模拟了EGL接口协议中的直接渲染流程,使得CRender可以不改变渲染处理逻辑,实现跨平台使用。
附图说明
图1为本发明实施例的跨平台调用OpenGL ES的渲染方法的流程图;
图2为本发明实施例的跨平台调用OpenGL ES的渲染装置的示意图;
图3为本发明实施例的电子设备的示意图。
附图标记:
跨平台调用OpenGL ES的渲染方法100;
跨平台调用OpenGL ES的渲染装置200;
获取模块210;调用模块220;
电子设备300;
存储器310;操作系统311;应用程序312;
处理器320;网络接口330;输入设备340;硬盘350;显示设备360。
具体实施方式
下面将结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
下面首先结合附图具体描述根据本发明实施例的跨平台调用OpenGL ES的渲染方法100。
如图1所示,根据本发明实施例的跨平台调用OpenGL ES的渲染方法100包括:
创建GLRenderContext来捕获展示窗口的上下文。
调用cDisplay接口并将图像RenderTexture渲染逻辑传入cDisplay接口中,实现OpenGL ES的视频渲染。
换言之,根据本发明实施例的跨平台调用OpenGL ES的渲染方法100,在C++逻辑代码层,通过创建GLRenderContext替代EGL接口中的eglgetdisplay()及eglCreateContext()函数来捕获展示窗口的上下文context,通过调用cDisplay()接口并将图像RenderTexture渲染逻辑传入cDisplay()接口中,即可实现EGL的eglSwapBuffers()视频渲染功能。
由此,根据本发明实施例的跨平台调用OpenGL ES的渲染方法100,可以绕过苹果公司提供的EAGL限制,让iOS应用支持类似EGL直接渲染的调用方式。
由于EAGL接口限制,无法直接获取界面窗口上下文(context)。为此,根据本发明的一个实施例,所述创建GLRenderContext来捕获展示窗口的上下文的方法包括:
编写基于EAGLLayer系统类的渲染环境GLKView。
EAGLLayer系统类提供实现渲染图像功能的cDisplay接口,所述cDisplay接口提供一个block参数作为将绘制图像前数据处理的代码块传入接口。
将所述cDisplay接口暴露在头文件以由外部方法进行调用。
进一步地,图像RenderTexture渲染逻辑通过lambda函数或方法指针传入所述cDisplay接口。
具体地,先使用Objective-C++语言编写一个基于EAGLLayer系统类的渲染环境GLKView,该类主要实现OpenGL ES的渲染上下文EAGLContext的创建,缓冲区绑定等环境设定的操作。同时该类提供一个通过调用EAGLContext的presentRenderbuffer方法实现渲染图像功能的display接口,该接口提供一个block参数作为将绘制图像前数据处理的代码块传入接口,最后将该接口暴露在头文件以实现由外部方法进行调用。
为保证代码间的解耦,及代码的跨平台作用,需要避免直接在图像数据处理模块代码中使用C++及Objective-C++语言的直接混编,故而在GLKView与C++逻辑代码层间,实现一个由C++与Objective-C++语言混编的,将GLKView的Objective-C++接口转换为纯C++接口的GLRenderContext类。该类实现了GLKView的创建及初始化方法,同时提供一个支持lambda函数接口cDisplay(),该接口实现了GLKView的display接口,同时将lambda匿名函数传入display接口的block中,至此,实现使用C++语言调用Objective-C++方法,同时将C++函数代码块传入Objective-C++方法体中并执行的功能。
其中需要说明的是,根据本发明实施例的跨平台调用OpenGL ES的渲染方法100中使用Objective-C++及C++两种语言进行开发。Objective-C++是苹果公司提供的用于开发iOS软件应用的一门语言,它具有兼容C语言及C++语言的特性,它支持在同一份代码文件中编写并使用C及C++代码。
另外,根据本发明实施例的跨平台调用OpenGL ES的渲染方法100中使用C++11标准提供的lambda表达式及Objctive-C++提供的block语法,这两种语法起到了向外提供内部代码块接口的作用。若无法使用C++11标准,可以使用方法指针传递的方式替代lambda表达式实现相同功能。
总而言之,根据本发明实施例的跨平台调用OpenGL ES的渲染方法100,通过将iOS渲染接口抛出由外部调用,可以将视频缓冲及播放速率控制功能交由统一控件控制,而不需要在内部独立维护一套缓冲算法;由于GLKView类仅提供基础的渲染窗口环境及按照OpenGL接口规范实现了渲染功能,同时GLRenderContext类则提供了GLKView渲染接口的由Objective-C++语言转换为C++语言接口的功能,这两个类功能单一且标准,无需额外进行维护,同时完全与CRender模块解耦,不影响CRender模块功能实现并且模拟了EGL接口协议中的直接渲染流程,使得CRender可以不改变渲染处理逻辑,实现跨平台使用。
如图2所示,根据本发明实施例的跨平台调用OpenGL ES的渲染装置200包括:获取模块210和调用模块220。
具体地,所述获取模块210用于捕获展示窗口的上下文,所述获取模块210具有cDisplay接口,所述调用模块220调用所述cDisplay接口并将图像RenderTexture渲染逻辑传入所述cDisplay接口中,实现OpenGL ES的视频渲染。
也就是说,根据本发明实施例的跨平台调用OpenGL ES的渲染装置200,在C++逻辑代码层,由获取模块210通过创建GLRenderContext替代EGL接口中的eglgetdisplay()及eglCreateContext()函数来捕获展示窗口的上下文context,调用模块220通过调用cDisplay()接口并将图像RenderTexture渲染逻辑传入cDisplay()接口中,即可实现EGL的eglSwapBuffers()视频渲染功能。
由此,根据本发明实施例的跨平台调用OpenGL ES的渲染装置200,可以绕过苹果公司提供的EAGL限制,让iOS应用支持类似EGL直接渲染的调用方式。
根据本发明的一个实施例,所述获取模块210还包括:编写模块,所述编写模块编写基于EAGLLayer系统类的渲染环境GLKView,EAGLLayer系统类提供实现渲染图像功能的cDisplay接口。优选地,使用Objective-C++语言编写所述渲染环境GLKView。进一步地,图像RenderTexture渲染逻辑通过lambda函数或方法指针传入所述cDisplay接口。
换句话说,获取模块210还包括编写模块,编写模块编写基于EAGLLayer系统类的渲染环境GLKView。同时,EAGLLayer系统类提供实现渲染图像功能的cDisplay接口,所述cDisplay接口提供一个block参数作为将绘制图像前数据处理的代码块传入接口,最后,将所述cDisplay接口暴露在头文件以由外部方法进行调用。
具体地,先使用Objective-C++语言编写一个基于EAGLLayer系统类的渲染环境GLKView,该类主要实现OpenGL ES的渲染上下文EAGLContext的创建,缓冲区绑定等环境设定的操作。同时该类提供一个通过调用EAGLContext的presentRenderbuffer方法实现渲染图像功能的display接口,该接口提供一个block参数作为将绘制图像前数据处理的代码块传入接口,最后将该接口暴露在头文件以实现由外部方法进行调用。
为保证代码间的解耦,及代码的跨平台作用,需要避免直接在图像数据处理模块代码中使用C++及Objective-C++语言的直接混编,故而在GLKView与C++逻辑代码层间,实现一个由C++与Objective-C++语言混编的,将GLKView的Objective-C++接口转换为纯C++接口的GLRenderContext类。该类实现了GLKView的创建及初始化方法,同时提供一个支持lambda函数接口cDisplay(),该接口实现了GLKView的display接口,同时将lambda匿名函数传入display接口的block中,至此,实现使用C++语言调用Objective-C++方法,同时将C++函数代码块传入Objective-C++方法体中并执行的功能。
其中需要说明的是,根据本发明实施例的跨平台调用OpenGL ES的渲染装置200中使用Objective-C++及C++两种语言进行开发。Objective-C++是苹果公司提供的用于开发iOS软件应用的一门语言,它具有兼容C语言及C++语言的特性,它支持在同一份代码文件中编写并使用C及C++代码。
另外,根据本发明实施例的跨平台调用OpenGL ES的渲染装置200中使用C++11标准提供的lambda表达式及Objctive-C++提供的block语法,这两种语法起到了向外提供内部代码块接口的作用。若无法使用C++11标准,可以使用方法指针传递的方式替代lambda表达式实现相同功能。
总而言之,根据本发明实施例的跨平台调用OpenGL ES的渲染装置200,通过将iOS渲染接口抛出由外部调用,可以将视频缓冲及播放速率控制功能交由统一控件控制,而不需要在内部独立维护一套缓冲算法;由于GLKView类仅提供基础的渲染窗口环境及按照OpenGL接口规范实现了渲染功能,同时GLRenderContext类则提供了GLKView渲染接口的由Objective-C++语言转换为C++语言接口的功能,这两个类功能单一且标准,无需额外进行维护,同时完全与CRender模块解耦,不影响CRender模块功能实现并且模拟了EGL接口协议中的直接渲染流程,使得CRender可以不改变渲染处理逻辑,实现跨平台使用。
此外,本发明还提供一种计算机存储介质,所述计算机存储介质包括一条或多条计算机指令,所述一条或多条计算机指令在执行时实现上述任一所述的跨平台调用OpenGLES的渲染方法100。
也就是说,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器运行时,使得所述处理器执行上述任一所述的跨平台调用OpenGL ES的渲染方法100。
如图3所示,本发明实施例提供了一种电子设备300,包括存储器310和处理器320,所述存储器310用于存储一条或多条计算机指令,所述处理器320用于调用并执行所述一条或多条计算机指令,从而实现上述任一所述的方法。
也就是说,电子设备300包括:处理器320和存储器310,在所述存储器310中存储有计算机程序指令,其中,在所述计算机程序指令被所述处理器运行时,使得所述处理器320执行上述任一所述的方法100。
进一步地,如图3所示,电子设备300还包括网络接口330、输入设备340、硬盘350、和显示设备360。
上述各个接口和设备之间可以通过总线架构互连。总线架构可以是可以包括任意数量的互联的总线和桥。具体由处理器320代表的一个或者多个中央处理器(CPU),以及由存储器310代表的一个或者多个存储器的各种电路连接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其它电路连接在一起。可以理解,总线架构用于实现这些组件之间的连接通信。总线架构除包括数据总线之外,还包括电源总线、控制总线和状态信号总线,这些都是本领域所公知的,因此本文不再对其进行详细描述。
所述网络接口330,可以连接至网络(如因特网、局域网等),从网络中获取相关数据,并可以保存在硬盘350中。
所述输入设备340,可以接收操作人员输入的各种指令,并发送给处理器320以供执行。所述输入设备340可以包括键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。
所述显示设备360,可以将处理器320执行指令获得的结果进行显示。
所述存储器310,用于存储操作系统运行所必须的程序和数据,以及处理器320计算过程中的中间结果等数据。
可以理解,本发明实施例中的存储器310可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或闪存。易失性存储器可以是随机存取存储器(RAM),其用作外部高速缓存。本文描述的装置和方法的存储器310旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器310存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:操作系统311和应用程序312。
其中,操作系统311,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序312,包含各种应用程序,例如浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序312中。
本发明上述实施例揭示的方法可以应用于处理器320中,或者由处理器320实现。处理器320可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器320中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器320可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器310,处理器320读取存储器310中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ASIC)、数字信号处理器DSP)、数字信号处理设备(DSPD)、可编程逻辑设备(PLD)、现场可编程门阵列(FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
具体地,处理器320还用于读取所述计算机程序,执行上述任一所述的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述收发方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种跨平台调用OpenGL ES的渲染方法,其特征在于,所述方法包括:
创建GLRenderContext来捕获展示窗口的上下文;
调用cDisplay接口并将图像RenderTexture渲染逻辑传入cDisplay接口中,实现OpenGL ES的视频渲染。
2.根据权利要求1所述的方法,其特征在于,所述创建GLRenderContext来捕获展示窗口的上下文,包括:
编写基于EAGLLayer系统类的渲染环境GLKView;
EAGLLayer系统类提供实现渲染图像功能的cDisplay接口,所述cDisplay接口提供一个block参数作为将绘制图像前数据处理的代码块传入接口;
将所述cDisplay接口暴露在头文件以由外部方法进行调用。
3.根据权利要求2所述的方法,其特征在于,使用Objective-C++语言编写所述渲染环境GLKView。
4.根据权利要求2所述的方法,其特征在于,所述cDisplay接口通过调用EAGLContext的presentRenderbuffer方法实现渲染图像功能。
5.根据权利要求1所述的方法,其特征在于,图像RenderTexture渲染逻辑通过lambda函数或方法指针传入所述cDisplay接口。
6.一种跨平台调用OpenGL ES的渲染装置,其特征在于,包括:
获取模块,所述获取模块用于捕获展示窗口的上下文,所述获取模块具有cDisplay接口;
调用模块,所述调用模块调用所述cDisplay接口并将图像RenderTexture渲染逻辑传入所述cDisplay接口中,实现OpenGL ES的视频渲染。
7.根据权利要求6所述的装置,其特征在于,所述获取模块包括:
编写模块,所述编写模块编写基于EAGLLayer系统类的渲染环境GLKView,EAGLLayer系统类提供实现渲染图像功能的cDisplay接口。
8.根据权利要求7所述的装置,其特征在于,使用Objective-C++语言编写所述渲染环境GLKView。
9.根据权利要求6所述的装置,其特征在于,图像RenderTexture渲染逻辑通过lambda函数或方法指针传入所述cDisplay接口。
10.一种计算机存储介质,其特征在于,包括一条或多条计算机指令,所述一条或多条计算机指令在执行时实现如权利要求1-5中任一项所述的方法。
CN201811526444.3A 2018-12-13 2018-12-13 跨平台调用OpenGL ES的渲染方法、装置及计算机存储介质 Active CN109656637B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811526444.3A CN109656637B (zh) 2018-12-13 2018-12-13 跨平台调用OpenGL ES的渲染方法、装置及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811526444.3A CN109656637B (zh) 2018-12-13 2018-12-13 跨平台调用OpenGL ES的渲染方法、装置及计算机存储介质

Publications (2)

Publication Number Publication Date
CN109656637A true CN109656637A (zh) 2019-04-19
CN109656637B CN109656637B (zh) 2022-01-25

Family

ID=66113064

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811526444.3A Active CN109656637B (zh) 2018-12-13 2018-12-13 跨平台调用OpenGL ES的渲染方法、装置及计算机存储介质

Country Status (1)

Country Link
CN (1) CN109656637B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112070871A (zh) * 2020-09-02 2020-12-11 山东天兑信息科技有限公司 一种跨平台三维可视化引擎构建系统、方法、终端及储存介质
CN112416470A (zh) * 2019-08-22 2021-02-26 腾讯科技(深圳)有限公司 命令的执行方法和装置、存储介质及电子装置
CN113835790A (zh) * 2020-06-23 2021-12-24 北京字节跳动网络技术有限公司 基于Android的分页页面显示方法和装置
CN114268796A (zh) * 2021-12-22 2022-04-01 天翼云科技有限公司 视频流处理的方法及装置
CN114968042A (zh) * 2022-05-26 2022-08-30 重庆长安汽车股份有限公司 一种基于andriod系统的图像编辑系统及方法
CN116661790A (zh) * 2023-08-01 2023-08-29 腾讯科技(深圳)有限公司 跨平台渲染方法、装置以及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105741227A (zh) * 2016-01-26 2016-07-06 网易(杭州)网络有限公司 渲染方法和装置
CN105828182A (zh) * 2016-05-13 2016-08-03 北京思特奇信息技术股份有限公司 一种基于OpenGL渲染实时视频的方法及系统
CN108921775A (zh) * 2018-05-09 2018-11-30 苏州蜗牛数字科技股份有限公司 一种基于Unity的软件线性渲染的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105741227A (zh) * 2016-01-26 2016-07-06 网易(杭州)网络有限公司 渲染方法和装置
CN105828182A (zh) * 2016-05-13 2016-08-03 北京思特奇信息技术股份有限公司 一种基于OpenGL渲染实时视频的方法及系统
CN108921775A (zh) * 2018-05-09 2018-11-30 苏州蜗牛数字科技股份有限公司 一种基于Unity的软件线性渲染的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
曾大稳: "OpenGLES通过SurfaceTexture预览摄像头画面", 《HTTPS://CLOUD.TENCENT.COM/DEVELOPER/ARTICLE/133336》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112416470A (zh) * 2019-08-22 2021-02-26 腾讯科技(深圳)有限公司 命令的执行方法和装置、存储介质及电子装置
CN112416470B (zh) * 2019-08-22 2023-08-25 腾讯科技(深圳)有限公司 命令的执行方法和装置、存储介质及电子装置
CN113835790A (zh) * 2020-06-23 2021-12-24 北京字节跳动网络技术有限公司 基于Android的分页页面显示方法和装置
CN113835790B (zh) * 2020-06-23 2024-03-19 北京字节跳动网络技术有限公司 基于Android的分页页面显示方法和装置
CN112070871A (zh) * 2020-09-02 2020-12-11 山东天兑信息科技有限公司 一种跨平台三维可视化引擎构建系统、方法、终端及储存介质
CN112070871B (zh) * 2020-09-02 2024-01-19 山东天兑信息科技有限公司 一种跨平台三维可视化引擎构建系统、方法、终端及储存介质
CN114268796A (zh) * 2021-12-22 2022-04-01 天翼云科技有限公司 视频流处理的方法及装置
CN114968042A (zh) * 2022-05-26 2022-08-30 重庆长安汽车股份有限公司 一种基于andriod系统的图像编辑系统及方法
CN114968042B (zh) * 2022-05-26 2023-05-05 重庆长安汽车股份有限公司 一种基于andriod系统的图像编辑系统及方法
CN116661790A (zh) * 2023-08-01 2023-08-29 腾讯科技(深圳)有限公司 跨平台渲染方法、装置以及电子设备
CN116661790B (zh) * 2023-08-01 2023-12-22 腾讯科技(深圳)有限公司 跨平台渲染方法、装置以及电子设备

Also Published As

Publication number Publication date
CN109656637B (zh) 2022-01-25

Similar Documents

Publication Publication Date Title
CN109656637A (zh) 跨平台调用OpenGL ES的渲染方法、装置及计算机存储介质
CN105827964B (zh) 一种图像处理方法及移动终端
ES2617303T3 (es) Técnicas de comunicación entre procesadores en una plataforma informática de múltiples procesadores
US20150294433A1 (en) Generating a screenshot
WO2019056744A1 (zh) 截屏方法、装置、电子设备及可读存储介质
US20110317763A1 (en) Information processing apparatus and information processing method
US11669437B2 (en) Methods and systems for content management and testing
CN105765533B (zh) 用于固件虚拟化的方法和装置
CN108509207A (zh) Web应用程序的跨系统安装
WO2022199284A1 (zh) 调用栈回溯方法、装置、设备和介质
KR20230133970A (ko) 사진촬영 방법, 장치 및 전자기기
CN106101526A (zh) 录屏方法及装置
TW586074B (en) System and method for online firmware update and on-screen-display parameter modification and control interface thereof
CN115665342B (zh) 图像处理方法、图像处理电路、电子设备和可读存储介质
US9753883B2 (en) Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory
US10318612B2 (en) System and method for implementing screen capture
JP2000047857A (ja) イベント駆動型ファンクションブロックのプログラミング方法とプログラム記録媒体
CN108874674A (zh) 页面调试方法及装置
CN106791650A (zh) 视频的预览方法、装置及智能终端
KR102174337B1 (ko) 메모리 시스템 및 이를 포함하는 전자 장치
US11509730B1 (en) Analyzing web service frontends to extract security-relevant behavior information
US11675584B1 (en) Visualizing dependent relationships in computer program analysis trace elements
CN105991633A (zh) 会话日志处理方法及装置
CN109558181B (zh) 非ie浏览器兼容ocx控件的方法、计算机存储介质及设备
CN113730917A (zh) 游戏脚本生成方法、装置、计算机设备和存储介质

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
GR01 Patent grant
GR01 Patent grant