CN105069831A - 一种基于Hook技术获取OpenGL渲染画面的方法和*** - Google Patents

一种基于Hook技术获取OpenGL渲染画面的方法和*** Download PDF

Info

Publication number
CN105069831A
CN105069831A CN201510451494.XA CN201510451494A CN105069831A CN 105069831 A CN105069831 A CN 105069831A CN 201510451494 A CN201510451494 A CN 201510451494A CN 105069831 A CN105069831 A CN 105069831A
Authority
CN
China
Prior art keywords
self
frame buffer
opengl
function
buffer object
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
CN201510451494.XA
Other languages
English (en)
Other versions
CN105069831B (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.)
Guangzhou Aipai Network Technology Co Ltd
Original Assignee
Guangzhou Aipai Network Technology 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 Guangzhou Aipai Network Technology Co Ltd filed Critical Guangzhou Aipai Network Technology Co Ltd
Priority to CN201510451494.XA priority Critical patent/CN105069831B/zh
Publication of CN105069831A publication Critical patent/CN105069831A/zh
Application granted granted Critical
Publication of CN105069831B publication Critical patent/CN105069831B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Generation (AREA)

Abstract

一种基于Hook技术实现安卓应用获取OpenGL渲染画面的方法和***,通过Hook技术用自定义的my_eglSwapBuffers函数接管OpenGL应用程序的eglSwapBuffers函数调用,通过创建自定义的帧缓存对象去替换OpenGL当前的帧缓存对象,当OpenGL执行渲染操作时,渲染结果会输出到自定义的帧缓存对象中,然后从自定义的帧缓存对象关联的Texture中把OpenGL渲染画面读取出来。该方法还通过Hook技术用自定义函数接管了各函数调用,使得在取图过程中,应用程序期望绑定或修改默认帧缓存对象时绑定或修改自定义帧缓存对象。

Description

一种基于Hook技术获取OpenGL渲染画面的方法和***
技术领域
本发明涉及一种安卓应用获取OpenGL渲染画面的技术,确切的说,涉及一种基于Hook技术的方法,该方法通过Hook技术用自定义的函数接管OpenGL应用程序的渲染函数调用,在不改变基于OpenGL的应用程序原有的应用层代码逻辑、并且不影响基于OpenGL的应用程序渲染效果的情况下获取OpenGL渲染画面,属于安卓应用领域。
背景技术
在计算机程序设计中,Hook是一种通过截取函数调用,或者截取软件组件间传递的消息或事件,来改变或增加操作***,或者应用程序,或者其他软件组件的行为的一种技术。处理截取函数调用、事件或消息的代码称为“Hook”。
OpenGL(OpenGraphicsLibrary)是定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口,它用于三维图象(二维的亦可),是一个功能强大,调用方便的底层图形库。OpenGLES(OpenGLforEmbeddedSystems)是OpenGL三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。
安卓***使用OpenGLES的标准接口来支持2D和3D图形渲染功能,经过加载顶点、图元信息、纹理等一系列步骤,把画面渲染到帧缓冲区里,并最终显示在屏幕上。
随着安卓***越来越受欢迎,以及移动应用不断的增长,在安卓***中越来越来多的基于OpenGL的应用需要获取OpenGL渲染画面的功能。安卓***中现有的获取OpenGL渲染画面的方法是结合基于OpenGL的引擎的源代码实现的,然而,该方法存在一些缺陷,首先,对于没有OpenGL渲染源代码的OpenGL应用则不能用该方法实现,再者,由于基于OpenGL的引擎各种各样,实现的方式也各有差异,需要针对不同的引擎做特殊的处理,没有一个通用的方案能实现,这样会导致开发难度增加,并且代码的维护成本也会很高。
发明内容
鉴于现有技术中存在的问题,本发明的目的在于提出一种安卓***中不依赖于OpenGL应用程序源代码、不依赖于特定的基于OpenGL的引擎、通用的方法来获取OpenGL渲染画面。
为了达到上述目的,本发明提出了一种安卓***中基于Hook技术的获取OpenGL渲染画面的方法,包括如下步骤:
通过Hook技术用自定义的my_eglSwapBuffers函数接管OpenGL应用程序的eglSwapBuffers函数调用。
通过Hook技术用自定义的my_glBindFramebuffer函数接管OpenGL应用程序的glBindFramebuffer函数调用。
通过Hook技术用自定义的my_glFramebufferRenderbuffer函数接管OpenGL应用程序的glFramebufferRenderbuffer函数调用。
通过Hook技术用自定义的my_glFramebufferTexture2D函数接管OpenGL应用程序的glFramebufferTexture2D函数。
通过Hook技术用自定义的my_glGetIntegerv函数接管OpenGL应用程序的glGetIntegerv函数。
创建自定义的帧缓存对象(FrameBufferObject),该对象用来替换OpenGL当前的帧缓存对象,当OpenGL执行渲染操作时会把画面渲染到该对象中;
创建自定义的Texture,用该Texture关联自定义帧缓存对象的颜色缓冲区,以便自定义帧缓存对象保存渲染画面到该Texture中;
创建自定义的RenderBuffer,用该RenderBuffer关联自定义帧缓存对象的深度缓冲区和模板缓冲区;
在my_eglSwapBuffers函数中执行获取渲染画面的逻辑,包括以下步骤:
步骤1、判断自定义的帧缓存对象是否已经绑定到OpenGLContext中,如果已经绑定执行步骤2,否则执行步骤5;
步骤2、恢复已经保存的OpenGLContext状态和帧缓存对象;
步骤3、重渲染自定义帧缓存对象关联的Texture到默认帧缓存对象;
步骤4、从自定义Texture中读取图像数据;
步骤5、调用eglSwapBuffers函数;
步骤6、保存当前的OpenGLContext状态和帧缓存对象;
步骤7、绑定自定义的帧缓存对象到OpenGL环境中,应用程序执行OpenGL渲染操作时会将画面渲染到自定义的帧缓存对象中。
本发明所提出的方法,在执行my_glBindFramebuffer函数时,在取图过程中,如果应用程序期望绑定默认的帧缓存对象到OpenGLContext中,则绑定自定义帧缓存对象到OpenGLContext中,确保OpenGL把画面渲染到自定义帧缓存对象中,否则调用原来的glBindFramebuffer函数。
本发明所提出的方法,在执行my_glFramebufferRenderbuffer函数时,如果自定义的帧缓存对象已经绑定到OpenGLContext中,并且是设置帧缓存对象的深度缓冲区或者模板缓冲区参数时,用自定义的RenderBuffer对象关联自定义帧缓存对象的深度缓冲区和模板缓冲区,否则调用原来的glFramebufferRenderbuffer函数。
本发明所提出的方法,在执行my_glFramebufferTexture2D函数时,如果自定义的帧缓存对象已经绑定到OpenGLContext中,并且是设置帧缓存对象的颜色缓冲区参数时,用自定义的Texture关联自定义帧缓存对象的颜色缓冲区,否则调用原来的glFramebufferTexture2D函数。
本发明所提出的方法,在执行my_glGetIntegerv函数时,如果自定义的帧缓存对象已经绑定到OpenGLContext中,则返回默认的帧缓存对象,否则调用原来的glGetIntegerv函数。
进一步,本发明设计了一种基于Hook技术实现安卓应用读取OpenGL渲染画面的***,其特征在于,包括以下模块:
预处理模块,本模块的功包括:
1)通过Hook技术接管OpenGL应用程序的渲染函数,包括:
用自定义my_eglSwapBuffers函数接管eglSwapBuffers函数调用;
用自定义my_glBindFramebuffer函数接管glBindFramebuffer函数调用;
用自定义my_glFramebufferRenderbuffer函数接管glFramebufferRenderbuffer函数调用;
用自定义my_glFramebufferTexture2D函数接管glFramebufferTexture2D函数调用;
用自定义my_glGetIntegerv函数接管glGetIntegerv函数调用;
2)创建自定义的帧缓存对象(FrameBufferObject),该对象用来替换OpenGL当前的帧缓存对象,以便OpenGL把画面渲染到该帧缓存对象中;
3)创建自定义的Texture,用该Texture关联自定义帧缓存对象的颜色缓冲区;
4)创建自定义的RenderBuffer,用该RenderBuffer关联自定义帧缓存对象的深度缓冲区和模板缓冲区;
截取模块,本模块的功能负责处理取图逻辑,包括以下步骤:
步骤1、恢复已经保存的OpenGLContext状态和帧缓存对象;
步骤2、重渲染自定义帧缓存对象关联的Texture到默认帧缓存对象;
步骤3、从自定义Texture中读取图像数据;
步骤4、调用eglSwapBuffers函数;
步骤5、保存当前的OpenGLContext状态和帧缓存对象;
步骤6、绑定自定义的帧缓存对象到OpenGL环境中,应用程序执行OpenGL渲染操作时会将画面渲染到自定义的帧缓存对象中;
采用本发明技术方案,不依赖于OpenGL应用程序的源代码,不改变OpenGL应用程序的应用层逻辑,不改变OpenGL应用程序的应用层渲染流程,不影响OpenGL应用程序的渲染效果,不依赖于特定的基于OpenGL的引擎,适用于没有提供OpenGL渲染源代码的OpenGL应用程序,适用于不同的基于OpenGL的引擎,提供了通用的OpenGL应用程序获取渲染画面的解决方案,最大限度的减少开发难度以及尽可能降低维护成本。
附图说明
下面结合附图和具体实施对本发明作进一步说明。
图1为本发明所揭示的一种基于Hook技术实现安卓应用读取OpenGL渲染画面的方法的流程图。
图2为本发明所揭示的一种基于Hook技术实现安卓应用读取OpenGL渲染画面的方法的my_eglSwapBuffers函数处理流程图。
图3为本发明所揭示的一种基于Hook技术实现安卓应用读取OpenGL渲染画面的方法的my_glBindFramebuffer函数处理流程图。
图4为本发明所揭示的一种基于Hook技术实现安卓应用读取OpenGL渲染画面的方法的my_glFramebufferRenderbuffer函数处理流程图。
图5为本发明所揭示的一种基于Hook技术实现安卓应用读取OpenGL渲染画面的方法的my_glFramebufferTexture2D函数处理流程图。
图6为本发明所揭示的一种基于Hook技术实现安卓应用读取OpenGL渲染画面的方法的my_glGetIntegerv函数处理流程图。
图7为本发明所揭示的一种基于Hook技术实现安卓应用读取OpenGL渲染画面的***的预处理模块流程图。
图8为本发明所揭示的一种基于Hook技术实现安卓应用读取OpenGL渲染画面的***的截取模块的流程图。
具体实现
参照附图1,本发明所揭示的一种基于Hook技术实现安卓应用读取OpenGL渲染画面的方法,包括以下流程:
步骤1、执行Hook操作,用自定义函数接管OpenGL应用程序的渲染函数,包括:
用my_eglSwapBuffers函数接管eglSwapBuffers函数调用;
用my_glBindFramebuffer函数接管glBindFramebuffer函数调用;
用my_glFramebufferRenderbuffer函数接管glFramebufferRenderbuffer函数调用;
用my_glFramebufferTexture2D函数接管glFramebufferTexture2D函数调用;
用my_glGetIntegerv函数接管glGetIntegerv函数调用。
步骤2、创建自定义帧缓存对象,该对象用于替换OpenGL当前的帧缓存对象,以便OpenGL把画面渲染到该帧缓存对象中;
步骤3、创建自定义Texture,该Texture用于关联到自定义帧缓存对象的颜色缓冲区,以便能存储渲染到自定义帧缓存对象的画面;
步骤4、创建自定义的RenderBuffer,用该RenderBuffer对象关联自定义帧缓存对象的深度缓冲区和模板缓冲区;
步骤5、执行my_eglSwapBuffers,在my_eglSwapBuffers函数中处理取图逻辑,包括:保存和恢复OpenGLContext的状态或帧缓存对象、绑定自定义帧缓存对象到OpenGLContext中、重渲染自定义帧缓存对象关联的Texture到默认的帧缓存对象、以及从自定义帧缓存对象关联的Texture中读取画面数据;
参考图2,本方法中,my_eglSwapBuffers处理取图逻辑,包括以下步骤:
步骤1、判断自定义的帧缓存对象是否已经绑定到OpenGLContext中,如果已经绑定执行步骤2,否则执行步骤5;
步骤2、恢复已经保存的OpenGLContext状态和帧缓存对象;
步骤3、重渲染自定义帧缓存对象关联的Texture到默认帧缓存对象;
步骤4、从自定义Texture中读取图像数据;
步骤5、调用eglSwapBuffers函数;
步骤6、保存当前的OpenGLContext状态和帧缓存对象;
步骤7、绑定自定义的帧缓存对象到OpenGL环境中,应用程序执行OpenGL渲染操作时会将画面渲染到自定义的帧缓存对象中;
参考图3,本方法中,my_glBindFramebuffer函数处理流程图,如果应用程序期望绑定默认的帧缓存对象到OpenGLContext中,则绑定自定义帧缓存对象到OpenGLContext中,确保OpenGL把画面渲染到自定义帧缓存对象中,否则调用原来的glBindFramebuffer函数。
参考图4,本方法中,my_glFramebufferRenderbuffer函数处理流程图,如果自定义的帧缓存对象已经绑定到OpenGLContext中,并且是设置帧缓存对象的深度缓冲区或者模板缓冲区参数时,用自定义的RenderBuffer对象关联自定义帧缓存对象的深度缓冲区和模板缓冲区,否则调用原来的glFramebufferRenderbuffer函数。
参考图5,本方法中,my_glFramebufferTexture2D函数处理流程图,如果自定义的帧缓存对象已经绑定到OpenGLContext中,并且是设置帧缓存对象的颜色缓冲区参数时,用自定义的Texture关联自定义帧缓存对象的颜色缓冲区,否则调用原来的glFramebufferTexture2D函数。
参考图6,本方法中,my_glGetIntegerv函数处理流程图,如果自定义的帧缓存对象已经绑定到OpenGLContext中,返回默认的帧缓存对象,否则调用原来的glGetIntegerv函数。
参照图7至图8,本实施例中,一种基于Hook技术读取OpenGL渲染画面的***,适用于安卓***,包括预处理模块和截取模块。
参考图7,预处理模块流程图,具体流程如下:
步骤1、通过Hook技术接管OpenGL应用程序的渲染函数,包括:
用自定义my_eglSwapBuffers函数接管eglSwapBuffers函数调用;
用自定义my_glBindFramebuffer函数接管glBindFramebuffer函数调用;
用自定义my_glFramebufferRenderbuffer函数接管glFramebufferRenderbuffer函数调用;
用自定义my_glFramebufferTexture2D函数接管glFramebufferTexture2D函数调用;
用自定义my_glGetIntegerv函数接管glGetIntegerv函数调用;
步骤2、创建自定义的帧缓存对象(FrameBufferObject),该对象用来替换OpenGL当前的帧缓存对象,以便OpenGL把画面渲染到该帧缓存对象中;
步骤3、创建自定义的Texture;
步骤4、用自定义的Texture关联自定义帧缓存对象的颜色缓冲区;
步骤5,创建自定义的RenderBuffer对象;
步骤6、用自定义RenderBuffer对象关联自定义帧缓存对象的深度缓冲区;
步骤7、用自定义RenderBuffer对象关联自定义帧缓存对象的模板缓冲区。
参考图8,截取模块流程图,包括以下步骤:
步骤1、恢复已经保存的OpenGLContext状态和帧缓存对象;
步骤2、重渲染自定义帧缓存对象关联的Texture到默认帧缓存对象;
步骤3、从自定义Texture中读取图像数据;
步骤4、调用eglSwapBuffers函数;
步骤5、保存当前的OpenGLContext状态和帧缓存对象;
步骤6、绑定自定义的帧缓存对象到OpenGL环境中,应用程序执行OpenGL渲染操作时会将画面渲染到自定义的帧缓存对象中;
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本发明的保护范围。

Claims (9)

1.一种基于Hook技术的获取OpenGL渲染画面的方法,通常适用于安卓***中,其特征在于,包括如下步骤:
执行Hook操作,用自定义函数接管应用程序的OpenGL函数,包括:
用自定义my_eglSwapBuffers函数接管eglSwapBuffers函数调用;
用自定义my_glBindFramebuffer函数接管glBindFramebuffer函数调用;
用自定义my_glFramebufferRenderbuffer函数接管glFramebufferRenderbuffer函数调用;
用自定义my_glFramebufferTexture2D函数接管glFramebufferTexture2D函数调用;
用自定义my_glGetIntegerv函数接管glGetIntegerv函数调用;
创建自定义帧缓存对象,该对象用于替换OpenGL当前的帧缓存对象,以便OpenGL把画面渲染到该帧缓存对象中;
创建自定义Texture,该Texture用于关联到自定义帧缓存对象的颜色缓冲区,以便能存储渲染到自定义帧缓存对象的画面;
创建自定义的RenderBuffer,用该RenderBuffer对象关联自定义帧缓存对象的深度缓冲区和模板缓冲区;
执行my_eglSwapBuffers,在my_eglSwapBuffers函数中处理取图逻辑,包括:保存和恢复OpenGLContext的状态或帧缓存对象、绑定自定义帧缓存对象到OpenGLContext中、重渲染自定义帧缓存对象关联的Texture到默认的帧缓存对象、以及从自定义帧缓存对象关联的Texture中读取画面数据。
2.如权利要求1所述的一种基于Hook技术的获取OpenGL渲染画面的方法,其特征在于,在my_eglSwapBuffers函数中执行获取渲染画面的逻辑,包括以下步骤:
步骤1、判断自定义的帧缓存对象是否已经绑定到OpenGLContext中,如果已经绑定执行步骤2,否则执行步骤5;
步骤2、恢复已经保存的OpenGLContext状态和帧缓存对象;
步骤3、重渲染自定义帧缓存对象关联的Texture到默认帧缓存对象;
步骤4、从自定义Texture中读取图像数据;
步骤5、调用eglSwapBuffers函数;
步骤6、保存当前的OpenGLContext状态和帧缓存对象;
步骤7、绑定自定义的帧缓存对象到OpenGL环境中,应用程序执行OpenGL渲染操作时会将画面渲染到自定义的帧缓存对象中。
3.如权利要求1所述的一种基于Hook技术的获取OpenGL渲染画面的方法,其特征在于,执行my_glBindFramebuffer函数时,如果期望绑定到默认帧缓存对象,实际会绑定到自定义帧缓存对象。
4.如权利要求1所述的一种基于Hook技术的获取OpenGL渲染画面的方法,其特征在于,执行my_glFramebufferRenderbuffer函数时,如果自定义的帧缓存对象已经绑定到OpenGLContext中,并且是设置帧缓存对象的深度缓冲区或者模板缓冲区参数时,用自定义的RenderBuffer对象关联自定义帧缓存对象的深度缓冲区和模板缓冲区。
5.如权利要求1所述的一种基于Hook技术的获取OpenGL渲染画面的方法,其特征在于,执行my_glFramebufferTexture2D函数时,如果自定义的帧缓存对象已经绑定到OpenGLContext中,并且是设置帧缓存对象的颜色缓冲区参数时,用自定义的Texture关联自定义帧缓存对象的颜色缓冲区。
6.如权利要求1所述的一种基于Hook技术的获取OpenGL渲染画面的方法,其特征在于,执行my_glGetIntegerv函数时,如果自定义的帧缓存对象已经绑定到OpenGLContext中,返回默认的帧缓存对象。
7.如权利要求1所述的一种基于Hook技术的获取OpenGL渲染画面的方法,其特征在于,应用程序绘制完每一帧画面后调用my_eglSwapBuffers函数,在my_eglSwapBuffers函数里把自定义的Texture的图像渲染到默认帧缓存对象,并调用原eglSwapBuffers把默认帧缓存对象渲染到本地窗口从而实现在屏幕上显示。
8.如权利要求1所述的一种基于Hook技术的获取OpenGL渲染画面的方法,其特征在于,不依赖于OpenGL应用程序的源代码,不改变OpenGL应用程序的应用层逻辑,不改变OpenGL应用程序的应用层渲染流程,不影响OpenGL应用程序的渲染效果,不依赖于特定的基于OpenGL的引擎,适用于没有提供OpenGL渲染源代码的OpenGL应用程序,适用于不同的基于OpenGL的引擎,提供了通用的OpenGL应用程序获取渲染画面的解决方案,最大限度的减少开发难度以及尽可能降低维护成本。
9.一种基于Hook技术获取OpenGL渲染画面的***,通常适用于安卓***中,其特征在于,包括以下模块:
预处理模块,本模块的功包括:
1)通过Hook技术接管OpenGL应用程序的渲染函数,包括:
用自定义my_eglSwapBuffers函数接管eglSwapBuffers函数调用;
用自定义my_glBindFramebuffer函数接管glBindFramebuffer函数调用;
用自定义my_glFramebufferRenderbuffer函数接管glFramebufferRenderbuffer函数调用;
用自定义my_glFramebufferTexture2D函数接管glFramebufferTexture2D函数调用;
用自定义my_glGetIntegerv函数接管glGetIntegerv函数调用;
2)创建自定义的帧缓存对象(FrameBufferObject),该对象用来替换OpenGL当前的帧缓存对象,以便OpenGL把画面渲染到该帧缓存对象中;
3)创建自定义的Texture,用该Texture关联自定义帧缓存对象的颜色缓冲区;
4)创建自定义的RenderBuffer,用该RenderBuffer关联自定义帧缓存对象的深度缓冲区和模板缓冲区;
截取模块,本模块的功能负责处理取图逻辑,包括以下步骤:
步骤1、恢复已经保存的OpenGLContext状态和帧缓存对象;
步骤2、重渲染自定义帧缓存对象关联的Texture到默认帧缓存对象;
步骤3、从自定义Texture中读取图像数据;
步骤4、调用eglSwapBuffers函数;
步骤5、保存当前的OpenGLContext状态和帧缓存对象;
步骤6、绑定自定义的帧缓存对象到OpenGL环境中,应用程序执行OpenGL渲染操作时会将画面渲染到自定义的帧缓存对象中。
CN201510451494.XA 2015-07-28 2015-07-28 一种基于Hook技术获取OpenGL渲染画面的方法和*** Active CN105069831B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510451494.XA CN105069831B (zh) 2015-07-28 2015-07-28 一种基于Hook技术获取OpenGL渲染画面的方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510451494.XA CN105069831B (zh) 2015-07-28 2015-07-28 一种基于Hook技术获取OpenGL渲染画面的方法和***

Publications (2)

Publication Number Publication Date
CN105069831A true CN105069831A (zh) 2015-11-18
CN105069831B CN105069831B (zh) 2018-05-29

Family

ID=54499187

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510451494.XA Active CN105069831B (zh) 2015-07-28 2015-07-28 一种基于Hook技术获取OpenGL渲染画面的方法和***

Country Status (1)

Country Link
CN (1) CN105069831B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354040A (zh) * 2015-12-10 2016-02-24 网易(杭州)网络有限公司 双引擎游戏内置工具栏的方法、装置及终端
CN106327563A (zh) * 2016-08-24 2017-01-11 武汉斗鱼网络科技有限公司 一种Directx纹理资源互操作***及方法
CN106528096A (zh) * 2016-10-20 2017-03-22 武汉斗鱼网络科技有限公司 一种在d3d12全屏游戏源上绘制弹幕图像的方法及***
CN106886404A (zh) * 2017-01-17 2017-06-23 武汉卓尔云市集团有限公司 一种android的3D渲染装置
CN109246480A (zh) * 2018-08-24 2019-01-18 苏州玩友时代科技股份有限公司 一种基于ios***的游戏屏幕录屏方法及装置
CN109885464A (zh) * 2019-01-24 2019-06-14 腾讯科技(深圳)有限公司 一种基于开放图形库的数据处理方法及***
CN112738624A (zh) * 2020-12-23 2021-04-30 北京达佳互联信息技术有限公司 用于视频的特效渲染的方法和装置
CN114089896A (zh) * 2022-01-13 2022-02-25 北京蔚领时代科技有限公司 一种渲染图像截取方法及装置
CN114595021A (zh) * 2022-03-10 2022-06-07 Oppo广东移动通信有限公司 花屏修复方法、装置、电子设备、芯片及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102681853A (zh) * 2012-05-17 2012-09-19 中科方德软件有限公司 一种利用OpenGL ES实现安卓操作***桌面3D转屏的方法及装置
JP2013041500A (ja) * 2011-08-18 2013-02-28 Wing Keung Cheung Html52d描画仕様のみで動作する3dエンジン
CN103336816A (zh) * 2013-06-28 2013-10-02 广州市动景计算机科技有限公司 安卓***上基于GPU实现的Canvas元素渲染方法及装置
CN103413343A (zh) * 2013-08-30 2013-11-27 广州市久邦数码科技有限公司 一种3d图像动画引擎
CN104038807A (zh) * 2014-06-13 2014-09-10 Tcl集团股份有限公司 一种基于OpenGL的图层混合方法及装置
CN104035768A (zh) * 2014-05-30 2014-09-10 四川长虹电器股份有限公司 Android平台兼容本地代码OpenGL程序的***及方法
CN104142807A (zh) * 2014-08-02 2014-11-12 合一网络技术(北京)有限公司 基于安卓控件利用OpenGL绘制图像的方法和***
US20150116310A1 (en) * 2013-10-28 2015-04-30 Vmware, Inc. Method and system to virtualize graphic processing services

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013041500A (ja) * 2011-08-18 2013-02-28 Wing Keung Cheung Html52d描画仕様のみで動作する3dエンジン
CN102681853A (zh) * 2012-05-17 2012-09-19 中科方德软件有限公司 一种利用OpenGL ES实现安卓操作***桌面3D转屏的方法及装置
CN103336816A (zh) * 2013-06-28 2013-10-02 广州市动景计算机科技有限公司 安卓***上基于GPU实现的Canvas元素渲染方法及装置
CN103413343A (zh) * 2013-08-30 2013-11-27 广州市久邦数码科技有限公司 一种3d图像动画引擎
US20150116310A1 (en) * 2013-10-28 2015-04-30 Vmware, Inc. Method and system to virtualize graphic processing services
CN104035768A (zh) * 2014-05-30 2014-09-10 四川长虹电器股份有限公司 Android平台兼容本地代码OpenGL程序的***及方法
CN104038807A (zh) * 2014-06-13 2014-09-10 Tcl集团股份有限公司 一种基于OpenGL的图层混合方法及装置
CN104142807A (zh) * 2014-08-02 2014-11-12 合一网络技术(北京)有限公司 基于安卓控件利用OpenGL绘制图像的方法和***

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
EAU: "《https://www.gamedev.net/topic/587015-mali-arm-black-screen-with-fbo/》", 6 November 2010 *
H523669057: "《http://blog.csdn.net/h523669057/article/details/42876119》", 19 January 2015 *
李新,李珊珊: "3ds 模型在OpenGL 中的读取和重绘", 《首都师范大学学报(自然科学版)》 *
李洪辉,刘志勤: "GPU在Android显示***中的应用与研究", 《计算机工程与设计》 *
杨乾: "三维Obj模型在android中的载人与渲染", 《电脑知识与技术》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354040B (zh) * 2015-12-10 2019-05-17 网易(杭州)网络有限公司 双引擎游戏内置工具栏的方法、装置及终端
CN105354040A (zh) * 2015-12-10 2016-02-24 网易(杭州)网络有限公司 双引擎游戏内置工具栏的方法、装置及终端
CN106327563A (zh) * 2016-08-24 2017-01-11 武汉斗鱼网络科技有限公司 一种Directx纹理资源互操作***及方法
CN106327563B (zh) * 2016-08-24 2019-04-05 武汉斗鱼网络科技有限公司 一种Directx纹理资源互操作***及方法
CN106528096A (zh) * 2016-10-20 2017-03-22 武汉斗鱼网络科技有限公司 一种在d3d12全屏游戏源上绘制弹幕图像的方法及***
CN106528096B (zh) * 2016-10-20 2020-02-07 武汉斗鱼网络科技有限公司 一种在d3d12全屏游戏源上绘制弹幕图像的方法及***
CN106886404A (zh) * 2017-01-17 2017-06-23 武汉卓尔云市集团有限公司 一种android的3D渲染装置
CN109246480A (zh) * 2018-08-24 2019-01-18 苏州玩友时代科技股份有限公司 一种基于ios***的游戏屏幕录屏方法及装置
CN109885464A (zh) * 2019-01-24 2019-06-14 腾讯科技(深圳)有限公司 一种基于开放图形库的数据处理方法及***
CN112738624A (zh) * 2020-12-23 2021-04-30 北京达佳互联信息技术有限公司 用于视频的特效渲染的方法和装置
CN114089896A (zh) * 2022-01-13 2022-02-25 北京蔚领时代科技有限公司 一种渲染图像截取方法及装置
CN114595021A (zh) * 2022-03-10 2022-06-07 Oppo广东移动通信有限公司 花屏修复方法、装置、电子设备、芯片及存储介质
CN114595021B (zh) * 2022-03-10 2023-12-12 Oppo广东移动通信有限公司 花屏修复方法、装置、电子设备、芯片及存储介质

Also Published As

Publication number Publication date
CN105069831B (zh) 2018-05-29

Similar Documents

Publication Publication Date Title
CN105069831A (zh) 一种基于Hook技术获取OpenGL渲染画面的方法和***
EP3657327A1 (en) Method for rendering game, and method, apparatus and device for generating game resource file
US8347275B2 (en) OpenGL to OpenGL/ES translator and OpenGL/ES simulator
CN103336816B (zh) 安卓***上基于GPU实现的Canvas元素渲染方法及装置
CN112381918A (zh) 图像渲染方法、装置、计算机设备和存储介质
KR102307163B1 (ko) 크로스 플랫폼 렌더링 엔진
CN103530018B (zh) 安卓操作***中微件界面的建立方法及移动终端
JP6062438B2 (ja) タイル単位レンダラーを用いてレイヤリングするシステムおよび方法
CN103413344A (zh) 3d帧动画实现方法、装置及终端
KR102381945B1 (ko) 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
US9396564B2 (en) Atlas generation based on client video configuration
CN105630478A (zh) 一种实现页面切换的方法和装置
CN109118556B (zh) 一种实现ui界面动画过渡效果的方法、***及存储介质
CN110990100B (zh) 游戏场景中节点对象的处理方法及装置
US20150371410A1 (en) Batch rendering method for 2d vector graphics path using gpu
CN113342703B (zh) 一种渲染效果实时调试方法、装置、开发设备及存储介质
WO2015183855A1 (en) Graphics pipeline state object and model
WO2022033162A1 (zh) 一种模型加载方法以及相关装置
CN108364324B (zh) 图像数据处理方法、装置及电子终端
US20240189720A1 (en) Performing rendering processing by a graphics processing unit and a central processing unit
CN105224315A (zh) 一种获取屏幕截图的方法及装置
CN103164227B (zh) 一种窗口图像的采集方法及装置
KR100948510B1 (ko) 하드웨어 방식의 벡터 그래픽 가속기, 그 가속기를 포함한어플리케이션 프로세서 및 단말기, 및 그 프로세서에서그래픽 가속방법
CN111258693B (zh) 远程显示方法及装置
CN110297585A (zh) 电子白板实现方法、装置、设备以及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant