CN111311716B - 动画播放方法、装置、终端设备以及存储介质 - Google Patents

动画播放方法、装置、终端设备以及存储介质 Download PDF

Info

Publication number
CN111311716B
CN111311716B CN202010126536.3A CN202010126536A CN111311716B CN 111311716 B CN111311716 B CN 111311716B CN 202010126536 A CN202010126536 A CN 202010126536A CN 111311716 B CN111311716 B CN 111311716B
Authority
CN
China
Prior art keywords
image
played
opengl shader
animation
compressed texture
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.)
Active
Application number
CN202010126536.3A
Other languages
English (en)
Other versions
CN111311716A (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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202010126536.3A priority Critical patent/CN111311716B/zh
Publication of CN111311716A publication Critical patent/CN111311716A/zh
Application granted granted Critical
Publication of CN111311716B publication Critical patent/CN111311716B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/802D [Two Dimensional] animation, e.g. using sprites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

本发明公开了一种动画播放方法、装置、终端设备以及存储介质,其方法包括:获取压缩纹理格式的待播放图像的序列帧;通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数;从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示。本发明极大降低了动画播放的耗时,并使得动画播放更流畅,避免播放动画时的卡顿现象。

Description

动画播放方法、装置、终端设备以及存储介质
技术领域
本发明涉及媒体播放技术领域,尤其涉及一种动画播放方法、装置、终端设备以及存储介质。
背景技术
目前,Android系统在播放动画时,一种方案是通过API(应用程序接口,Application Programming Interface)利用Animation类实现PNG逐帧动画播放。这种方案中,PNG文件需要经过CPU解压成R5G6B5,A4R4G4B4,A1R5G5B5,R8G8B8,A8R8G8B8等像素格式,再传送到GPU(Graphics Processing Unit,图形处理器)端进行使用,耗时较长,而且播放动画是在UI(用户界面,User Interface)线程进行,容易引起卡顿。
发明内容
本发明的主要目的在于提供一种动画播放方法、装置、终端设备以及存储介质,旨在降低动画播放耗时,提升动画播放的流畅性。
为实现上述目的,本发明提供一种动画播放方法,包括:
获取压缩纹理格式的待播放图像的序列帧;
通过预设的API调用开放式图形库OpenGL着色器,获取所述OpenGL着色器的配置参数;
从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;
根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示。
可选地,所述通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数的步骤之前还包括:
初始化所述OpenGL着色器,配置所述待播放图像在所述OpenGL着色器中的配置参数。
可选地,所述初始化所述OpenGL着色器,配置所述待播放图像在所述OpenGL着色器中的配置参数的步骤包括:
编写OPENGL着色器顶点坐标和纹理坐标,配置所述待播放图像在所述OpenGL着色器中的图形坐标、绘制方式。
可选地,所述根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示的步骤之前还包括:
对读取的所述压缩纹理图像帧数据进行矩阵变换;
所述根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示的步骤包括:
根据所述OpenGL着色器的配置参数,以及矩阵变换后的压缩纹理图像帧数据绘制图像帧纹理并显示。
可选地,所述根据所述OpenGL着色器的配置参数,以及矩阵变换后的压缩纹理图像帧数据绘制图像帧纹理并显示的步骤包括:
对矩阵变换后的压缩纹理图像帧数据进行图形渲染,生成2D纹理;
基于所述2D纹理、所述OpenGL着色器的配置参数,通过所述OpenGl着色器在GLSurfaceView绘制图像帧纹理;
将绘制的图像帧纹理依次显示在终端屏幕上。
可选地,所述获取压缩纹理格式的待播放图像的序列帧的步骤包括:
获取图像文件格式的待播放图像的序列帧;
将所述图像文件格式的待播放图像的序列帧转换为文件扩展名PKG格式,并打包压缩成ZIP文件;
将所述ZIP文件转换为压缩纹理格式,得到压缩纹理格式的待播放图像的序列帧。
可选地,所述压缩纹理格式的待播放图像的序列帧为压缩纹理ETC1序列帧。
本发明实施例还提出一种动画播放装置,所述动画播放装置包括:
帧获取模块,用于获取压缩纹理格式的待播放图像的序列帧;
参数获取模块,用于通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数;
读取模块,用于从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;
绘制显示模块,用于根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示。
本发明实施例还提出一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的动画播放程序,所述动画播放程序被所述处理器执行时实现如上所述的动画播放方法的步骤。
本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有动画播放程序,所述动画播放程序被处理器执行时实现如上所述的动画播放方法的步骤。
本发明实施例提出的动画播放方法、装置、终端设备以及存储介质,通过获取压缩纹理格式的待播放图像的序列帧;通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数;从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示。由于对播放图像帧采用压缩纹理格式,纹理格式是能被GPU所识别的像素格式,在播放时能够被快速寻址并采样,从而极大降低了动画播放的耗时;此外,播放动画不在UI线程进行,即不占用系统的主线程,而是利用OpenGL特有的线程,从而使得动画播放更流畅,避免播放动画时的卡顿现象。
附图说明
图1为本发明动画播放装置所属终端设备的功能模块示意图;
图2为本发明动画播放方法一示例性实施例的流程示意图;
图3是本发明实施例中OpenGL ES 2.0支持的常用的纹理格式结构示意图;
图4为本发明动画播放方法另一示例性实施例的流程示意图;
图5为本发明动画播放方法再一示例性实施例的流程示意图;
图6为本发明动画播放方法实施例的细化流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:通过获取压缩纹理格式的待播放图像的序列帧;通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数;从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示。由于对播放图像帧采用压缩纹理格式,纹理格式是能被GPU所识别的像素格式,在播放时能够被快速寻址并采样,从而极大降低了动画播放的耗时;此外,播放动画不在UI线程进行,即不占用系统的主线程,而是利用OpenGL特有的线程,从而使得动画播放更流畅,避免播放动画时的卡顿现象。
本发明实施例涉及的主要技术术语:
OpenGL(Open Graphics Library):开放式图形库,OpenGL是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口,由美国硅图公司(SGI)于1992年6月30日发布。该接口通常用于与图形处理单元交互,以实现硬件加速。OpenGL常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。
OpenGL ES:OpenGL三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。
PKG:文件拓展名。
纹理压缩:是指将应用开发中的一些纹理图片资源(可png、jpe等)采用特定工具转为特殊的压缩纹理格式,在应用运行时,直接将压缩格式的纹理数据送入纹理缓冲供纹理采样使用。
ETC(EricssonTexture Compression,爱立信纹理压缩)是2005年初与爱立信合作研发的一种有损纹理压缩技术,是最通用的纹理压缩格式,几乎所有的安卓设备都可以支持ETC压缩的GPU加速。它是一种为感知质量设计的有损算法,其依据是人眼对亮度改变的反应要高于色度改变。
ETC1:一种Opengl es2.0开发基本通用的一种压缩纹理格式。
原始的ETC1压缩提供了对24位RGB数据6倍的压缩比率;ETC1把4x4的像素单元压成64位的数据块,4x4的像素单元首先被水平或垂直分割为2个4x2的区块,每个区块都被赋予一个基础颜色(使用RGB444+RGB444或RGB555+RGB333的组合的形式),一个3位的亮度索引以及像素索引。每个像素的颜色等于所属子块基础颜色加上索引指向的亮度修正。
ETC2:是ETC1的扩展并且兼容ETC1,提供了更高质量的RGB压缩,并且支持Alpha通道。但是只是在OpenGL ES 3.0和OpenGL4.3上才被要求支持,而对于现在的移动手持设备来说,绝大多数只支持OpenGL ES 2.0。
本发明实施例考虑到,目前Android系统在播放动画时,PNG文件需要经过CPU解压成像素格式,再传送到GPU端进行使用,耗时较长,而且播放动画是在UI线程进行,容易引起卡顿。
基于此,本发明实施例提出一种解决方案,采用压缩纹理格式,纹理格式是能被GPU所识别的像素格式,在播放时能够被快速寻址并采样,从而极大降低了动画播放的耗时,而且播放动画不占用系统的主线程,而是利用OpenGL特有的线程,使得动画播放更流畅,避免播放动画时的卡顿现象,优化用户体验。
具体地,参照图1,图1为本发明动画播放装置所属终端设备的功能模块示意图。该动画播放装置可以为独立于终端设备的、能够进行视频播放及相应数据处理的装置,其可以通过硬件或软件的形式承载于终端设备上。该终端设备可以为手机、平板电脑等智能移动终端,还可以固定终端。
在本实施例中,该动画播放装置所属终端设备至少包括输出模块110、处理器120、存储器130以及通信模块140。
存储器130中存储有操作系统以及动画播放程序,动画播放装置可以将获取的压缩纹理格式的待播放图像的序列帧、获取的OpenGL着色器的配置参数以及绘制的帧纹理图像等数据存储于该存储器130中;输出模块110可为显示屏、扬声器等。通信模块140可以包括WIFI模块、移动通信模块以及蓝牙模块等,通过通信模块140与外部设备或服务器进行通信。
其中,存储器130中的动画播放程序被处理器执行时实现以下步骤:
获取压缩纹理格式的待播放图像的序列帧;
通过预设的API调用开放式图形库OpenGL着色器,获取所述OpenGL着色器的配置参数;
从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;
根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示。
进一步地,存储器130中的动画播放程序被处理器执行时还实现以下步骤:
初始化所述OpenGL着色器,配置所述待播放图像在所述OpenGL着色器中的配置参数。
进一步地,存储器130中的动画播放程序被处理器执行时还实现以下步骤:
编写OPENGL着色器顶点坐标和纹理坐标,配置所述待播放图像在所述OpenGL着色器中的图形坐标、绘制方式。
进一步地,存储器130中的动画播放程序被处理器执行时还实现以下步骤:
对读取的所述压缩纹理图像帧数据进行矩阵变换;
所述根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示的步骤包括:
根据所述OpenGL着色器的配置参数,以及矩阵变换后的压缩纹理图像帧数据绘制图像帧纹理并显示。
进一步地,存储器130中的动画播放程序被处理器执行时还实现以下步骤:
对矩阵变换后的压缩纹理图像帧数据进行图形渲染,生成2D纹理;
基于所述2D纹理、所述OpenGL着色器的配置参数,通过所述OpenGl着色器在GLSurfaceView绘制图像帧纹理;
将绘制的图像帧纹理依次显示在终端屏幕上。
进一步地,存储器130中的动画播放程序被处理器执行时还实现以下步骤:
获取图像文件格式的待播放图像的序列帧;
将所述图像文件格式的待播放图像的序列帧转换为文件扩展名PKG格式,并打包压缩成ZIP文件;
将所述ZIP文件转换为压缩纹理格式,得到压缩纹理格式的待播放图像的序列帧。
本实施例通过上述方案,具体通过获取压缩纹理格式的待播放图像的序列帧;通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数;从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示。由于对播放图像帧采用压缩纹理格式,纹理格式是能被GPU所识别的像素格式,在播放时能够被快速寻址并采样,从而极大降低了动画播放的耗时;此外,播放动画不在UI线程进行,即不占用系统的主线程,而是利用OpenGL特有的线程,从而使得动画播放更流畅,避免播放动画时的卡顿现象。
基于上述终端设备架构但不限于上述架构,提出本发明方法实施例。
参照图2,图2为本发明动画播放方法一示例性实施例的流程示意图。所述动画播放方法,包括:
步骤S101,获取压缩纹理格式的待播放图像的序列帧;
本实施例方法的执行主体可以是一种动画播放装置,该动画播放装置可以设置在手机、平板电脑等移动终端上,此外,本实施例方法的执行主体也可以直接是手机、平板电脑等移动终端。上述移动终端可以是安卓系统移动终端。本实施例以安卓系统的手机进行举例。
具体地,首先获取待播放图像文件,即待播放动画,该待播放图像文件需预先转换为压缩纹理格式,因此,需要将常用的图像文件格式转换为压缩纹理格式。
常用的图像文件格式和纹理格式的区别:
常用的图像文件格式有BMP,TGA,JPG,GIF,PNG等;常用的纹理格式有R5G6B5,A4R4G4B4,A1R5G5B5,R8G8B8,A8R8G8B8等。
其中,图像文件格式是图像为了存储信息而使用的对信息的特殊编码方式,它存储在磁盘中,或者内存中,但是并不能被GPU所识别,因为以向量计算见长的GPU对于这些复杂的计算无能为力。当这些文件格式被读入后,还是需要经过CPU解压成R5G6B5,A4R4G4B4,A1R5G5B5,R8G8B8,A8R8G8B8等像素格式,再传送到GPU端进行使用。
由此,本发明实施例采用纹理格式的图像帧数据,纹理格式是能够被GPU所识别的像素格式,在播放时,能被快速寻址并采样。
OpenGL ES 2.0支持上述提到的R5G6B5,A4R4G4B4,A1R5G5B5,R8G8B8,A8R8G8B8等纹理格式,其中R5G6B5,A4R4G4B4,A1R5G5B5每个像素占用2个字节(BYTE),R8G8B8每个像素占用3个字节,A8R8G8B8每个像素占用4个字节,如图3所示。
对于一张512*512的纹理而言,R5G6B5格式的文件需要占用512KB的容量,A8R8G8B8格式的文件需要占用1MB的容量;如果是1024*1024的纹理,则各需要占用2M和4M的容量。
本发明实施例采用的纹理格式的图像帧数据需进行纹理压缩,如前所述,纹理压缩是指将应用开发中的一些纹理图片资源(可png、jpe等)采用特定工具转为特殊的压缩纹理格式,在应用运行时,直接将压缩纹理格式的纹理数据送入纹理缓冲供纹理采样使用。
压缩纹理格式既能表现丰富的色彩和细节,又能在最小失真的情况下,达到更小的纹理容量。
作为一种实施方式,本实施例压缩纹理格式的待播放图像的序列帧为ETC1序列帧。
ETC1(Ericsson texture compression),是OpenGL ES图形标准的一部分,并且被所有的Android设备所支持,扩展名为:GL_OES_compressed_ETC1_RGB8_texture。当加载压缩纹理时,<internalformat>参数支持如下格式:
GL_ETC1_RGB8_OES(RGB,每个像素0.5个字节)。
作为一种实施方式,所述获取压缩纹理格式的待播放图像的序列帧的步骤可以包括:
首先,获取图像文件格式的待播放图像的序列帧,比如获取PNG图片素材;
然后,将所述图像文件格式的待播放图像的序列帧转换为PKG格式,并打包压缩成ZIP文件;
最后,将所述ZIP文件转换为压缩纹理格式,得到压缩纹理格式的待播放图像的序列帧。
以ETC1为例,读取ZIP文件,转化为ETC1,之后即可通过OpenGLES2.0来播放ETC1压缩纹理逐帧动画。
步骤S102,通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数;
本实施例实现动画播放,需要在终端上使用OpenGL着色器。
OpenGL一般使用经典的固定渲染管线来渲染对象,但是随着OpenGL技术的不断发展,固定管线技术也在不断改进,最终变成了目前的可编程管线技术。就是渲染管线的某些阶段可以通过编程来控制(提供了很大的灵活性),而着色器(Shader)就是这些可编程的程序片段,用来替代原始管线的特定渲染阶段。
因此,着色器是用来实现图像渲染,替代固定渲染管线的可编辑程序。着色器在整个OpenGL渲染过程中发挥着重要作用,可以实现3D图形学计算中的相关计算,由于其可编辑性,可以实现各种各样的图像效果而不用受显卡的固定渲染管线限制。其中着色器的参数中,Vertex Shader主要负责顶点的几何关系等的运算,Pixel Shader主要负责片源颜色等的计算。
本实施例在播放动画图像时,预先在安卓手机等终端设备上编写OpenGL着色器并配置OpenGL着色器的相关配置参数。
其中,配置参数即配置所述待播放图像在所述OpenGL着色器中的图形坐标、绘制方式等。
步骤S103,从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;
在播放动画时,从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据进行渲染、绘制处理,即读取一帧,渲染、绘制一帧,最终得到动画效果。
步骤S104,根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示。
对于每一帧压缩纹理图像帧数据,根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示,包括图像的渲染、绘制及显示等操作,一帧一帧的处理,直到待播放图像的序列帧全部处理完,最终得到动画效果。
具体实现时,作为一种实施方式,首先,将压缩纹理图像帧数据进行图形渲染,生成2D纹理;然后,基于所述2D纹理、所述OpenGL着色器的配置参数,通过所述OpenGl着色器在GLSurfaceView绘制图像帧纹理;最后,将绘制的图像帧纹理显示在终端屏幕上。
以上完成一帧的操作,依次一帧一帧的读取、渲染、绘制,直到待播放图像的序列帧全部处理完,最终得到动画效果。
上述图像处理过程中,通过OpenGl着色器在GLSurfaceView绘制图像帧纹理,其中,GLSurfaceView的特点是:
GLSurfaceView继承SurfaceView(一种用来显示图片的容器),并实现了SurfaceHolder.Callback2接口。由于继承于SurfaceView,就拥有SurfaceView的特性。如能在View的基础上创建独立的Surface,拥有SurfaceHolder来管理Surface,并且可以在子线程中进行View的渲染操作。通过SurfaceHolder得到Canvas,然后在单独的线程中利用Canvas绘制内容,然后更新到Surface。
GLSurfaceView在SurfaceView的基础上实现GLThread(EGLContext创建GL环境所在线程),可通过OpenGL在SurfaceView所提供的Surface进行绘制。
本实施例通过上述方案,具体通过获取压缩纹理格式的待播放图像的序列帧;通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数;从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示。由于对播放图像帧采用压缩纹理格式,纹理格式是能被GPU所识别的像素格式,在播放时能够被快速寻址并采样,从而极大降低了动画播放的耗时;此外,播放动画不在UI线程进行,即不占用系统的主线程,而是利用OpenGL特有的线程,从而使得动画播放更流畅,避免播放动画时的卡顿现象。
参照图4,图4为本发明动画播放方法另一示例性实施例的流程示意图。基于上述图2所示的实施例,在本实施例中,在上述步骤S102,通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数之前还包括:
步骤S1021,初始化所述OpenGL着色器,配置所述待播放图像在所述OpenGL着色器中的配置参数。
具体地,初始化所述OpenGL着色器即初始化当前播放图像的OpenGL着色器相关参数,即为:编写OPENGL着色器及编写OPENGL着色器顶点坐标和纹理坐标等,配置所述待播放图像在所述OpenGL着色器中的配置参数即配置所述待播放图像在所述OpenGL着色器中的图形坐标、绘制方式等。
本实施例通过上述方案,具体通过获取压缩纹理格式的待播放图像的序列帧;初始化所述OpenGL着色器,配置所述待播放图像在所述OpenGL着色器中的配置参数,通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数;从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示。由于对播放图像帧采用压缩纹理格式,纹理格式是能被GPU所识别的像素格式,在播放时能够被快速寻址并采样,从而极大降低了动画播放的耗时;此外,播放动画不在UI线程进行,即不占用系统的主线程,而是利用OpenGL特有的线程,从而使得动画播放更流畅,避免播放动画时的卡顿现象。
参照图5,图5为本发明动画播放方法再一示例性实施例的流程示意图。基于上述图4所示的实施例,在本实施例中,在上述步骤S104,根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示之前还包括:
步骤S1041,对读取的所述压缩纹理图像帧数据进行矩阵变换;
其中,对读取的压缩纹理图像帧数据进行矩阵变换的目的是:防止图片显示变形,即根据当前终端屏幕的显示参数,对读取的压缩纹理图像帧数据进行矩阵变换,即对后续绘制的图形大小进行屏幕尺寸匹配和调整,避免绘制后的图形在当前终端屏幕上显示变形。
所述步骤S104,根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示包括:
步骤S1042,根据所述OpenGL着色器的配置参数,以及矩阵变换后的压缩纹理图像帧数据绘制图像帧纹理并显示。
具体实现如下:
对矩阵变换后的压缩纹理图像帧数据进行图形渲染,生成2D纹理;
基于所述2D纹理、所述OpenGL着色器的配置参数,通过所述OpenGl着色器在GLSurfaceView绘制图像帧纹理;
将绘制的图像帧纹理依次显示在终端屏幕上。
以下对本实施例方案进行详细阐述:
如图6所示,本发明实施例是要实现在安卓等终端设备上以压缩纹理格式播放动画,以安卓手机为例,安卓手机提供API支持OpenGL,具体流程如下:
首先,在播放前,获取要播放的图像帧数据,为一张张PNG格式图片,需要将PNG图片素材转换成PKG格式,然后打包压缩成ZIP文件;
然后,读取ZIP文件,转化为ETC1纹理压缩格式文件。
然后,在播放时,以手机为例:
在手机上编写OpenGL着色器,然后编写OPENGL顶点坐标和纹理坐标,这是图片显示的基本操作,供手机的API调用;
初始化着色器,即对当前图片的坐标、绘制方式等参数进行配置,得到配置参数;
之后,通过手机的API调用着色器,获取配置参数,同时逐帧读取ETC1中的帧数据;
然后,对读取的帧数据进行矩阵变换(以防止图片显示变形,即对图形大小进行屏幕尺寸匹配和调整);
然后,通过配置参数、及矩阵变换后的帧数据,进行图形渲染,生成2D纹理;
最后,在手机屏幕上绘制帧纹理,显示图像,即将图像画在显示屏幕上。
以上完成一帧的操作,依次原理,一帧一帧的读取、渲染、绘制,直到待播放图像的序列帧全部处理完,最终得到动画效果。
相比现有技术,本实施例方案中,采用压缩纹理格式的图像帧数据,压缩纹理格式是能被GPU所识别的像素格式,在播放时能够被快速寻址并采样,从而极大降低了动画播放的耗时;此外,播放动画不在UI线程进行,即不占用系统的主线程,而是利用OpenGL特有的线程,从而使得动画播放更流畅,避免播放动画时的卡顿现象。
此外,本发明实施例还提出一种动画播放装置,所述动画播放装置包括:
帧获取模块,用于获取压缩纹理格式的待播放图像的序列帧;
参数获取模块,用于通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数;
读取模块,用于从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;
绘制显示模块,用于根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示。
本实施例实现动画播放的原理及实施过程,请参照上述各实施例,在此不再赘述。
此外,本发明实施例还提出一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的动画播放程序,所述动画播放程序被所述处理器执行时实现如上述实施例所述的动画播放方法的步骤。
由于本动画播放程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有动画播放程序,所述动画播放程序被处理器执行时实现如上述实施例所述的动画播放方法的步骤。
由于本动画播放程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
相比现有技术,本发明实施例提出的动画播放方法、装置、终端设备以及存储介质,通过获取压缩纹理格式的待播放图像的序列帧;通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数;从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示。由于对播放图像帧采用压缩纹理格式,纹理格式是能被GPU所识别的像素格式,在播放时能够被快速寻址并采样,从而极大降低了动画播放的耗时;此外,播放动画不在UI线程进行,即不占用系统的主线程,而是利用OpenGL特有的线程,从而使得动画播放更流畅,避免播放动画时的卡顿现象。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,被控终端,或者网络设备等)执行本发明每个实施例的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (8)

1.一种动画播放方法,其特征在于,应用于Android系统,所述方法包括:
获取压缩纹理格式的待播放图像的序列帧;
通过预设的应用程序接口API调用开放式图形库OpenGL着色器,获取所述OpenGL着色器的配置参数;
从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;
根据当前终端屏幕的显示参数,对读取的所述压缩纹理图像帧数据进行矩阵变换;
根据所述OpenGL着色器的配置参数,以及矩阵变换后的所述压缩纹理图像帧数据绘制图像帧纹理并显示;
其中,通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数的步骤之前还包括:
初始化所述OpenGL着色器,配置所述待播放图像在所述OpenGL着色器中的配置参数。
2.根据权利要求1所述的动画播放方法,其特征在于,所述初始化所述OpenGL着色器,配置所述待播放图像在所述OpenGL着色器中的配置参数的步骤包括:
编写OpenGL着色器顶点坐标和纹理坐标,配置所述待播放图像在所述OpenGL着色器中的图形坐标、绘制方式。
3.根据权利要求1所述的动画播放方法,其特征在于,所述根据所述OpenGL着色器的配置参数,以及矩阵变换后的压缩纹理图像帧数据绘制图像帧纹理并显示的步骤包括:
对矩阵变换后的压缩纹理图像帧数据进行图形渲染,生成2D纹理;
基于所述2D纹理、所述OpenGL着色器的配置参数,通过所述OpenGL着色器在GLSurfaceView绘制图像帧纹理;
将绘制的图像帧纹理依次显示在终端屏幕上。
4.根据权利要求1-3中任一项所述的动画播放方法,其特征在于,所述获取压缩纹理格式的待播放图像的序列帧的步骤包括:
获取图像文件格式的待播放图像的序列帧;
将所述图像文件格式的待播放图像的序列帧转换为文件扩展名PKG格式,并打包压缩成ZIP文件;
将所述ZIP文件转换为压缩纹理格式,得到压缩纹理格式的待播放图像的序列帧。
5.根据权利要求4所述的动画播放方法,其特征在于,所述压缩纹理格式的待播放图像的序列帧为压缩纹理ETC1序列帧。
6.一种动画播放装置,其特征在于,应用于Android系统,所述动画播放装置包括:
帧获取模块,用于获取压缩纹理格式的待播放图像的序列帧;
参数获取模块,用于通过预设的API调用OpenGL着色器,获取所述OpenGL着色器的配置参数;
读取模块,用于从所述待播放图像的序列帧中依次读取压缩纹理图像帧数据;
绘制显示模块,用于根据所述OpenGL着色器的配置参数,以及读取的所述压缩纹理图像帧数据绘制图像帧纹理并显示;
所述动画播放装置还用于,初始化所述OpenGL着色器,配置所述待播放图像在所述OpenGL着色器中的配置参数;以及,根据当前终端屏幕的显示参数,对读取的所述压缩纹理图像帧数据进行矩阵变换;
所述绘制显示模块还用于,根据所述OpenGL着色器的配置参数,以及矩阵变换后的所述压缩纹理图像帧数据绘制图像帧纹理并显示。
7.一种终端设备,其特征在于,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的动画播放程序,所述动画播放程序被所述处理器执行时实现如权利要求1-5中任一项所述的动画播放方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有动画播放程序,所述动画播放程序被处理器执行时实现如权利要求1-5中任一项所述的动画播放方法的步骤。
CN202010126536.3A 2020-02-27 2020-02-27 动画播放方法、装置、终端设备以及存储介质 Active CN111311716B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010126536.3A CN111311716B (zh) 2020-02-27 2020-02-27 动画播放方法、装置、终端设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010126536.3A CN111311716B (zh) 2020-02-27 2020-02-27 动画播放方法、装置、终端设备以及存储介质

Publications (2)

Publication Number Publication Date
CN111311716A CN111311716A (zh) 2020-06-19
CN111311716B true CN111311716B (zh) 2023-05-12

Family

ID=71160306

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010126536.3A Active CN111311716B (zh) 2020-02-27 2020-02-27 动画播放方法、装置、终端设备以及存储介质

Country Status (1)

Country Link
CN (1) CN111311716B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112037309A (zh) * 2020-07-07 2020-12-04 华人运通(上海)云计算科技有限公司 帧动画生成方法、装置、设备及存储介质
CN114090101A (zh) * 2020-08-05 2022-02-25 宝能汽车集团有限公司 开机动画的处理方法、装置、车辆、设备和存储介质
CN113902609B (zh) * 2021-03-17 2022-06-10 广州市保伦电子有限公司 一种基于OpenGL嵌入式设备流畅渲染控件动画方法及设备
CN114168079B (zh) * 2021-12-09 2023-08-22 深圳软牛科技有限公司 一种识别磁盘删除的tiff类型数据的方法、装置及相关组件
CN114598912B (zh) * 2022-02-10 2024-05-10 互影科技(北京)有限公司 一种多媒体文件显示方法、装置、存储介质及电子设备
CN116703689B (zh) * 2022-09-06 2024-03-29 荣耀终端有限公司 一种着色器程序的生成方法、装置和电子设备
CN115861499B (zh) * 2022-11-24 2023-07-14 无锡车联天下信息技术有限公司 一种序列帧动画的播放方法、播放装置、设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010244450A (ja) * 2009-04-09 2010-10-28 Yappa Corp 画像処理装置及び画像処理方法
CN103413344A (zh) * 2013-07-10 2013-11-27 深圳Tcl新技术有限公司 3d帧动画实现方法、装置及终端
CN105741228A (zh) * 2016-03-11 2016-07-06 腾讯科技(深圳)有限公司 图形处理方法及装置
CN108520491A (zh) * 2018-04-24 2018-09-11 上海仪电汽车电子系统有限公司 基于qnx操作系统的全屏开机动画驱动方法
CN108921778A (zh) * 2018-07-06 2018-11-30 成都品果科技有限公司 一种星球效果图生成方法
CN110769241A (zh) * 2019-11-05 2020-02-07 广州虎牙科技有限公司 视频帧处理方法、装置、用户端及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010244450A (ja) * 2009-04-09 2010-10-28 Yappa Corp 画像処理装置及び画像処理方法
CN103413344A (zh) * 2013-07-10 2013-11-27 深圳Tcl新技术有限公司 3d帧动画实现方法、装置及终端
CN105741228A (zh) * 2016-03-11 2016-07-06 腾讯科技(深圳)有限公司 图形处理方法及装置
CN108520491A (zh) * 2018-04-24 2018-09-11 上海仪电汽车电子系统有限公司 基于qnx操作系统的全屏开机动画驱动方法
CN108921778A (zh) * 2018-07-06 2018-11-30 成都品果科技有限公司 一种星球效果图生成方法
CN110769241A (zh) * 2019-11-05 2020-02-07 广州虎牙科技有限公司 视频帧处理方法、装置、用户端及存储介质

Also Published As

Publication number Publication date
CN111311716A (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
CN111311716B (zh) 动画播放方法、装置、终端设备以及存储介质
US9904977B2 (en) Exploiting frame to frame coherency in a sort-middle architecture
US11069128B2 (en) Rendering an image from computer graphics using two rendering computing devices
US10776997B2 (en) Rendering an image from computer graphics using two rendering computing devices
US20150279055A1 (en) Mipmap compression
CN110782387B (zh) 图像处理方法、装置、图像处理器及电子设备
EP2797049B1 (en) Color buffer compression
US9355465B2 (en) Dynamic programmable texture sampler for flexible filtering of graphical texture data
US20240189720A1 (en) Performing rendering processing by a graphics processing unit and a central processing unit
US20180097527A1 (en) 32-bit hdr pixel format with optimum precision
Nah et al. Classified texture resizing for mobile devices
US11094032B2 (en) Out of order wave slot release for a terminated wave
CN114904274A (zh) 云游戏的画面渲染方法、装置、电子设备以及存储介质
US9972064B1 (en) Non-intrusive and low-power recording
KR101337558B1 (ko) 고해상도 영상 또는 입체 영상의 허브기능을 구비한 모바일단말기 및 그 모바일단말기를 이용하여 고해상도 영상 또는 입체 영상 제공 방법
TW202324292A (zh) 用於顏色空間轉換的非線性濾波
CN117201832A (zh) 一种透明动画特效视频的处理方法、装置以及设备
KR20230053597A (ko) 이미지-공간 함수 전송
CN117917682A (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