CN117689796A - 一种渲染处理方法及电子设备 - Google Patents
一种渲染处理方法及电子设备 Download PDFInfo
- Publication number
- CN117689796A CN117689796A CN202310835649.4A CN202310835649A CN117689796A CN 117689796 A CN117689796 A CN 117689796A CN 202310835649 A CN202310835649 A CN 202310835649A CN 117689796 A CN117689796 A CN 117689796A
- Authority
- CN
- China
- Prior art keywords
- texture
- parameter
- fragment shader
- electronic device
- target application
- 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
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 89
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000000034 method Methods 0.000 claims abstract description 74
- 239000012634 fragment Substances 0.000 claims abstract description 69
- 230000006870 function Effects 0.000 claims description 129
- 238000012986 modification Methods 0.000 claims description 42
- 230000004048 modification Effects 0.000 claims description 41
- 230000015654 memory Effects 0.000 claims description 39
- 230000008569 process Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 9
- 238000005070 sampling Methods 0.000 claims description 9
- 238000004422 calculation algorithm Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 35
- 230000006854 communication Effects 0.000 description 35
- 239000010410 layer Substances 0.000 description 24
- 238000012545 processing Methods 0.000 description 21
- 230000014509 gene expression Effects 0.000 description 14
- 238000007726 management method Methods 0.000 description 14
- 230000005236 sound signal Effects 0.000 description 13
- 238000010295 mobile communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 8
- 239000011800 void material Substances 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 6
- 230000009467 reduction Effects 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000003416 augmentation Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 239000011230 binding agent Substances 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000010985 leather Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003238 somatosensory effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/40—Analysis of texture
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
本申请提供了一种渲染处理方法及电子设备。该方法包括:启动目标应用;通过目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案,并获取纹理图案中第一纹理坐标对应的颜色;第一texture函数包括第一参数、第二参数和第三参数,第一参数用于调用纹理图案,第二参数用于指示第一纹理坐标,第三参数用于指示纹理等级偏移值,纹理等级偏移值用于确定纹理图案的纹理等级;基于获取的颜色渲染目标应用的画面。实施本申请实施例,能够提高显示的画面的分辨率,改善画面质量。
Description
技术领域
本申请实施例涉及终端技术,尤其涉及一种渲染处理方法及电子设备。
背景技术
随着终端技术的进步,各式各样的电子设备应运而生。电子设备逐渐成为人类日常生活、工作的必需品。人们通过电子设备玩游戏、看视频或进行视频通话等活动。这些活动中电子设备都需要进行相应的图形渲染来显示对应的画面。如何清晰地显示画面是本领域技术人员急需解决的问题。
发明内容
本申请实施例提供了一种渲染处理方法及电子设备,能够提高显示的画面的分辨率,改善画面质量。
第一方面,本申请实施例提供了一种渲染处理方法,该方法包括:
启动目标应用;
通过该目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案,并获取该纹理图案中第一纹理坐标对应的颜色;该第一texture函数包括第一参数、第二参数和第三参数,该第一参数用于调用该纹理图案,该第二参数用于指示该第一纹理坐标,该第三参数用于指示纹理等级偏移值,该纹理等级偏移值用于确定该纹理图案的纹理等级;
基于获取的该颜色渲染该目标应用的画面。
上述方案相比于现有方案,在texture函数中新添加了一个第三参数,用于指示采样的纹理图案的纹理等级偏移值,进而可以适应性调整采样的纹理图案的纹理等级。进而可以根据对应的场景需求渲染出质量匹配的画面,提高用户体验。
一种可能的实现中,该第三参数为统一uniform变量;该方法还包括:通过uniform参数传递方式将该纹理等级偏移值赋值给该第三参数。
上述方案通过uniform参数传递方式为纹理等级偏移参数赋值,实现简单。
一种可能的实现中,该通过uniform参数传递方式将该纹理等级偏移值赋值给该第三参数,包括:通过uniform参数传递方式将配置文件中的该纹理等级偏移值赋值给该第三参数。
上述方案中,纹理等级偏移值来自配置文件,那么可以通过修改配置文件的值来修改该纹理等级偏移值,以实现适应性调整纹理等级偏移值的目的。
一种可能的实现中,该方法还包括:响应于该目标应用的启动,删除该目标应用缓存的第二片段着色器的二进制文件;
在该目标应用加载的过程中,修改该第二片段着色器的源程序,获得该第一片段着色器的源程序。
上述方案中,先删除原来的着色器文件,然后在应用加载过程中修改着色器获得新的着色,该新的着色器可以调用上述包括三个参数的texture函数。进而可以适应性调整采样的纹理图案的纹理等级。进而可以根据对应的场景需求渲染出质量匹配的画面,提高用户体验。
一种可能的实现中,该修改该第二片段着色器的源程序,包括:在该第二片段着色器的源程序包括的第二texture函数中添加该第三参数,获得该第一texture函数;该第二texture函数包括该第一参数和该第二参数。
上述方案中,可以通过在原着色器的texture函数中添加上述第三参数,以获得上述第一texture函数,实现简单便捷。
一种可能的实现中,该修改该第二片段着色器的源程序,包括:在该第二片段着色器的源程序中添加该第三参数的声明。
上述方案中,在着色器中添加纹理等级偏移参数即上述第三参数的声明,以使得电子设备可以识别该第三参数。
一种可能的实现中,该修改该第二片段着色器的源程序,获得该第一片段着色器的源程序之后,还包括:编译该第一片段着色器的源程序获得该第一片段着色器的二进制文件;保存该第一片段着色器的二进制文件。
上述方案中,修改着色器后,重新编译修改后的着色器获得新的着色器二进制文件并保存,以便下次直接调用,节省资源。
一种可能的实现中,该通过该目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案,包括:调用该第一片段着色器的二进制文件运行该第一片段着色器,以调用该第一texture函数采样该纹理图案。
上述方案中,可以通过调用重新编译后的着色器的二进制文件运行着色器以进行图案的采样和渲染。
一种可能的实现中,该响应于该目标应用的启动,删除该目标应用缓存的第二片段着色器的二进制文件,包括:响应于该目标应用的启动,检查是否存在修改标记;该修改标记用于标识该第一片段着色器被修改;在未存在该修改标记的情况下,删除该目标应用缓存的第二片段着色器的二进制文件。
上述方案中,删除着色器文件前先检查着色器是否已被修改过,若未修改才删除原文件并在后面修改,以减少多次重复修改的资源消耗。
一种可能的实现中,该通过该目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案,包括:在颜色缓冲区的大小指示采用降分辨率渲染的方式渲染画面的情况下,通过该目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案。
上述方案中,在降分辨率渲染的场景下采用修改后的着色器渲染画面,以提高降分辨率渲染的画质。
一种可能的实现中,该纹理等级偏移值小于零,该基于获取的该颜色渲染该目标应用的画面之后,还包括:通过人工智能AI超分算法将获得的渲染画面进行AI超分渲染;显示该AI超分渲染后的画面。
上述方案中,在降分辨率渲染过程中取偏移值小于零,以获得分辨率更好的降分辨率渲染画面,然后再输入到AI超分算法中进行AI超分渲染,可以获得质量更好的AI超分结果。进而呈现出分辨率更好的画面。
一种可能的实现中,该通过该目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案,包括:在颜色缓冲区的大小指示不采用降分辨率渲染的方式渲染画面的情况下,将零赋值给该第三参数,并通过该目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案。
上述方案中,在不是降分辨率渲染的场景下,第三参数赋值为零,然后再采用修改后的着色器渲染画面。体现出了本申请实施方案中渲染方式的可选择性,即可以灵活根据场景选择不同的渲染参数,进而满足各种场景渲染的需求。
第二方面,本申请实施例提供了一种电子设备,该电子设备包括:一个或多个处理器和存储器;该存储器与该一个或多个处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,该一个或多个处理器调用该计算机指令以使得该电子设备执行如下操作:
启动目标应用;
通过该目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案,并获取该纹理图案中第一纹理坐标对应的颜色;该第一texture函数包括第一参数、第二参数和第三参数,该第一参数用于调用该纹理图案,该第二参数用于指示该第一纹理坐标,该第三参数用于指示纹理等级偏移值,该纹理等级偏移值用于确定该纹理图案的纹理等级;
基于获取的该颜色渲染该目标应用的画面。
一种可能的实现中,该第三参数为统一uniform变量;该一个或多个处理器调用该计算机指令以使得该电子设备还执行如下操作:通过uniform参数传递方式将该纹理等级偏移值赋值给该第三参数。
一种可能的实现中,该一个或多个处理器调用该计算机指令以使得该电子设备具体执行如下操作:通过uniform参数传递方式将配置文件中的该纹理等级偏移值赋值给该第三参数。
一种可能的实现中,该一个或多个处理器调用该计算机指令以使得该电子设备还执行如下操作:响应于该目标应用的启动,删除该目标应用缓存的第二片段着色器的二进制文件;
在该目标应用加载的过程中,修改该第二片段着色器的源程序,获得该第一片段着色器的源程序。
一种可能的实现中,该一个或多个处理器调用该计算机指令以使得该电子设备具体执行如下操作:在该第二片段着色器的源程序包括的第二texture函数中添加该第三参数,获得该第一texture函数;该第二texture函数包括该第一参数和该第二参数。
一种可能的实现中,该一个或多个处理器调用该计算机指令以使得该电子设备具体执行如下操作:在该第二片段着色器的源程序中添加该第三参数的声明。
一种可能的实现中,该一个或多个处理器调用该计算机指令以使得该电子设备还执行如下操作:编译该第一片段着色器的源程序获得该第一片段着色器的二进制文件;保存该第一片段着色器的二进制文件。
一种可能的实现中,该一个或多个处理器调用该计算机指令以使得该电子设备具体执行如下操作:调用该第一片段着色器的二进制文件运行该第一片段着色器,以调用该第一texture函数采样该纹理图案。
一种可能的实现中,该一个或多个处理器调用该计算机指令以使得该电子设备具体执行如下操作:响应于该目标应用的启动,检查是否存在修改标记;该修改标记用于标识该第一片段着色器被修改;在未存在该修改标记的情况下,删除该目标应用缓存的第二片段着色器的二进制文件。
一种可能的实现中,该一个或多个处理器调用该计算机指令以使得该电子设备具体执行如下操作:在颜色缓冲区的大小指示采用降分辨率渲染的方式渲染画面的情况下,通过该目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案。
一种可能的实现中,该一个或多个处理器调用该计算机指令以使得该电子设备还执行如下操作:通过人工智能AI超分算法将获得的渲染画面进行AI超分渲染;显示该AI超分渲染后的画面。
一种可能的实现中,该一个或多个处理器调用该计算机指令以使得该电子设备具体执行如下操作:在颜色缓冲区的大小指示不采用降分辨率渲染的方式渲染画面的情况下,将零赋值给该第三参数,并通过该目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案。
第三方面,本申请实施例提供了一种电子设备,包括:触控屏、摄像头、一个或多个处理器和一个或多个存储器;该一个或多个处理器与该触控屏、该摄像头、该一个或多个存储器耦合,该一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当该一个或多个处理器执行该计算机指令时,使得该电子设备执行如第一方面或第一方面的任意一种可能实现的方式所述的方法。
第四方面,本申请实施例提供了一种芯片系统,该芯片系统应用于电子设备,该芯片系统包括一个或多个处理器,该处理器用于调用计算机指令以使得该电子设备执行如第一方面或第一方面的任意一种可能实现的方式所述的方法。
第五方面,本申请实施例提供了一种包含指令的计算机程序产品,当该计算机程序产品在电子设备上运行时,使得该电子设备执行如第一方面或第一方面的任意一种可能实现的方式所述的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当该指令在电子设备上运行时,使得该电子设备执行如第一方面或第一方面的任意一种可能实现的方式所述的方法。
上述第二方面至第六方面用于配合实现上述第一方面及其可能实现方式中任一项所述的方法,因此具有和上述第一方面及其可能实现方式中对应的有益效果,此处不赘述。
附图说明
图1A为本申请实施例提供的多级渐远纹理示意图;
图1B为本申请实施例提供的纹理坐标示意图;
图2为本申请实施例提供的渲染步骤示意图;
图3为本申请实施例提供的电子设备硬件结构示意图;
图4为本申请实施例提供的电子设备软件结构示意图;
图5和图6为本申请实施例提供的方法流程示意图。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请以下实施例中的术语“用户界面(user interface,UI)”,是应用程序或操作系统与用户之间进行交互和信息交换的介质接口,它实现信息的内部形式与用户可以接受形式之间的转换。用户界面是通过java、可扩展标记语言(extensible markuplanguage,XML)等特定计算机语言编写的源代码,界面源代码在电子设备上经过解析,渲染,最终呈现为用户可以识别的内容。用户界面常用的表现形式是图形用户界面(graphicuser interface,GUI),是指采用图形方式显示的与计算机操作相关的用户界面。它可以是在电子设备的显示屏中显示的文本、图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、Widget等可视的界面元素。
附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前,应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
首先介绍一下本申请实施例涉及的技术术语。
1、纹理(texture)。
计算机图形学中的纹理既包括通常意义上物体表面的纹理,即包括使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案,通常我们更多地称之为花纹。对于花纹而言,就是在物体表面绘出彩色花纹或图案,产生了纹理后的物体表面依然光滑如故。对于沟纹而言,实际上也是要在表面绘出彩色花纹或图案,同时要求视觉上给人以凹凸不平感即可。凹凸不平的图案一般是不规则的。在计算机图形学中,这两种类型的纹理的生成方法完全一致,这也是计算机图形学中把他们统称为纹理的原因所在。
2、纹理坐标(texture coordinate)。
为了能够把纹理映射(map)到用于构造物体的三角形上,需要指定三角形的每个顶点各自对应纹理图案的哪个部分。这样每个顶点就会关联着一个纹理坐标,用来标明从纹理图案的哪个位置采集片段颜色。该采集的颜色即为该顶点的颜色。
以2D纹理为例,2D纹理坐标可以表示为(x,y)。该x和y的取值范围为0到1之间。可以示例性参见图1A,纹理坐标起始于(0,0),也就是纹理图片的左下角,终始于(1,1),即纹理图片的右上角。
3、多级渐远纹理(Mipmap)。
Mipmap概念:在图形渲染过程中,为了能够高效获取某一像素下对应纹理某一区域的颜色,典型且常用的解决方案是:采取一种利用空间换时间的办法,将一块纹理生成一系列等级的纹理图像。在渲染过程中,依据场景中物体与摄像机的相对位置等参数,选择对应纹理等级的纹理图案采样,以获取指定的纹理坐标的颜色。即物体与摄像机之间的距离不同,可以采用不同等级的纹理来渲染。如当二者距离远时,使用尺寸较大的纹理(即使用等级较低的纹理),虽然解析度不高,但也不会被用户注意到。进而高效且高质量的完成空间中所有物体纹理的渲染。
上述一系列的纹理等级例如包括0、1、2、3、…、Q这Q+1种等级,Q为大于1的整数。其中,后一个等级的纹理图像的宽是前一个等级的纹理图像的宽的N分之一,并且后一个等级的纹理图像的高是前一个等级的纹理图像的高的N分之一。该N可以是大于或等于2的整数。为了便于理解,以N=2为例,可以示例性参见图1B。在图1B中以Q+1=4,即4个等级为例。可以看到,等级为1的纹理图像的宽和高均为等级为0的纹理图像的二分之一,等级为2的纹理图像的宽和高均为等级为1的纹理图像的二分之一,等级为3的纹理图像的宽和高均为等级为2的纹理图像的二分之一。可以理解的是,此处纹理图像的宽和高指的是纹理图像的像素矩阵的宽和高。
上述纹理等级中,等级越低精度越高,用于渲染出来的图像的分辨率越高。反之,等级越高精度越低,用于渲染出来的图像的分辨率越低。
4、纹理的创建和使用。
以开放图形库(OpenGL)或三维图形处理库(OpenGL for embedded systems,OpenGL ES)为例,想要使用纹理,首先需要创建并绑定纹理对象。例如可以通过如下计算机程序来创建纹理对象并绑定:
“unsigned int texture;
glGenTexture(1,&texture);
glBindTexture(GL_TEXTURE_2D,texture);”。
其中,glGenTexture函数用于创建一个纹理对象,glBindTexture函数用于绑定纹理对象。glBindTexture函数的第一个参数指定了要绑定的纹理格式,可以指定为2D纹理还是3D纹理,第二个参数是我们的纹理对象。本申请实施例主要以2D纹理为例介绍,3D纹理同理则不再赘述。
使用纹理之前,还要将准备好的纹理图像文件加载到我们的应用中,例如可以使用图像加载库stb_image来实现。
加载成功后,可以通过glTexImage2D函数来创建2D纹理。该glTexImage2D函数可以表示为glTexImage2D(GLenum target,GLint level,GLenum internalformat,GLsizeiwidth,GLsizei height,GLint border,GLenum format,GLenum type,const void*pixels)。
该glTexImage2D函数的参数说明如下:
第一个参数GLenum target指定了纹理目标(target)。由于在glTexImage2D函数中,这个值是GL_TEXTURE_2D。
第二个参数GLint level用于指定多级渐远纹理的等级级别。
第三个参数GLenum internalformat指示把纹理储存的格式。示例性地,可以把纹理储存为RGB值。
第四个参数GLsizei width和第五个参数GLsizei height设置最终的纹理的宽度和高度。前述加载纹理图像的时候储存了它们,所以可以使用对应的数值。
第六个参数GLint border被设为0。
第七个参数GLenum format和第八个参数GLenum type定义了源纹理图像的格式和数据类型。
最后一个参数const void*pixels指定内存中指向图像数据的指针,用于指向具体的图像像素数据。
前面定义和创建了纹理后,可以在片段着色器(fragment shader)中调用对应的纹理以用于渲染显示。
示例性地,在片段着色器中,可以声明一个纹理采样器(例如sampler2D),用于访问创建的纹理。具体的,可以使用texture(参数1,参数2)函数来采样纹理的颜色。Texture函数的第一个参数即参数1是纹理采样器,可以用于调用前面通过glTexImage2D函数创建的纹理。第二个参数即参数2是对应的纹理坐标。texture函数会使用之前glTexImage2D函数设置的纹理参数对相应的颜色值进行采样。这个片段着色器的输出就是纹理的纹理坐标上的颜色。
电子设备在为用户提供游戏、视频播放或视频通话等服务的界面显示的过程中,会出现画面分辨率低的情况。经过深入分析发现,为了节省不必要的渲染以减少性能上的浪费,电子设备采用纹理等级较低的纹理图案(又可以称为贴图)来渲染。纹理等级较低的纹理图案渲染得到的画面分辨率低,使得画面存在失真,出现模糊不清晰的问题。为了便于理解,下面以游戏渲染的应用场景为例进一步介绍。
可以示例性参见图2。图2中示例性示出了游戏画面从渲染到上屏呈现过程中包括的部分步骤。具体的,在游戏画面渲染过程中,可以包括采样纹理图案、降分辨率渲染和人工智能(artificial intelligence,AI)超分渲染等处理步骤。AI超分渲染后可以上屏呈现显示对应的画面。示例性地,电子设备可以采样用于渲染的纹理图案。然后,基于采样的纹理图案进行渲染。一般地,为了节省不必要的渲染以减少性能上的浪费,在画面中物体距离观察者(摄像机)较远时,采样纹理等级较低的纹理图案来渲染。基于纹理等级较低的纹理图案来渲染获得的画面分辨率较低,因此又可以称为降分辨率渲染。这种降分辨率渲染的方式可以降低图形处理器(graphics processing unit,GPU)的渲染负载,以达到降低GPU的处理负担的目的。但是,这样一来获得的画面分辨率低,画面存在失真的问题。由于前面降分辨率渲染获得的画面质量较差,即使后面利用AI超分算法来对该低分辨率画面进行进一步的渲染(即AI超分渲染)来提高画面的分辨率,获得的画面依然存在一定的失真。尤其是对远处的物体以及地面等对象,AI超分渲染后依然失真严重。
为了实现改善上屏呈现的画面的质量以清晰地显示画面的目的,本申请实施例提供了一种渲染处理方法,以及实现该渲染处理方法的电子设备。
下面先示例性介绍本申请实施例提供的电子设备。本申请实施例所涉及的电子设备可以包括手持设备(例如,手机、平板电脑、掌上电脑等)、车载设备(例如,汽车、电动车、飞机、船舶等)、可穿戴设备(例如智能手表(如iWatch等)、智能手环、计步器等)、智能机器人、车间设备,以及各种形式的可以显示用户界面的用户设备(User Equipment,UE)、移动台(Mobile station,MS)或终端设备(Terminal Equipment)等等。可选的,电子设备通常支持多种应用,如相机应用、文字处理应用、电话应用、电子邮件应用、即时消息应用、照片管理应用、网络浏览应用、数字音乐播放器应用和/或数字视频播放器应用等等。可以理解,此处介绍仅为示例,本申请实施例对电子设备的具体形态和实现方式不做限制。
可以示例性参见图3,示出了电子设备100的硬件结构示意图。
下面以电子设备100为例对实施例进行具体说明。应该理解的是,电子设备100可以具有比图3中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图3中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
SIM卡接口可以被用于与SIM卡接口195通信,实现传送数据到SIM卡或读取SIM卡中数据的功能。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用(比如人脸识别功能,指纹识别功能、移动支付功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如人脸信息模板数据,指纹信息模板等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflash storage,UFS)等。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于合成请求,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。
本申请实施例中,电子设备100可以通过处理器110执行本申请实施例提供的渲染处理方法。
基于图3所示本申请实施例的电子设备100的硬件结构示意图,下面介绍本申请实施例的电子设备100的软件结构框图,如图4所示。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图4所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,和短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图4所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,和通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
下面示例性说明电子设备100软件以及硬件的工作流程。当触摸传感器180K接收到触摸操作,相应的硬件中断被发给内核层。内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,识别该输入事件所对应的控件。以该触摸操作是触摸单击操作,该单击操作所对应的控件为某一个游戏应用程序的图标控件为例,该游戏应用调用应用程序框架层的接口,启动该游戏应用。
下面示例性介绍本申请实施例提供的渲染处理方法。该方法可以应用于上述介绍的电子设备。可以示例性参见图5,本申请实施例提供的渲染处理方法包括但不限于如下步骤。
501、启动目标应用。
示例性地,该目标应用可以是任意的需要渲染显示画面的应用,例如可以是游戏类应用、视频播放类应用或通讯聊天类应用等等,本申请实施例不做限制。该目标应用可以是APP、小程序或者网页应用程序等等,本申请实施例对具体应用的实现形式不做限制。
示例性地,电子设备可以响应于用户对该目标应用的图标、入口链接或入口控件等对象的触摸或点击操作启动该目标应用。或者响应于用户对该目标应用的语音启动命令等启动该目标应用。本申请实施例对启动目标应用的具体方式不做限制。
502、检查修改标记是否存在。
示例性地,上述电子设备响应于目标应用的启动,可以检查本地是否存在修改标记。通过该修改标记是否存在用于标识该目标应用的着色器是否被修改。即标识该目标应用的着色器的计算机程序代码是否被修改。若该修改标记存在,则表明该着色器已经被修改。若该修改标记不存在,则表明该着色器未被修改。
一种可能的实现中,该修改标记例如可以是修改标记文件或者是具体的预设标识等。示例性地,本申请实施例中,修改着色器是为了修改采样的纹理图案的等级偏移值,因此,该修改标记文件又可以称为偏移标记(bias-flag)文件。该修改标记文件中的内容可以为空,或者可以是其它预设的信息,本申请实施例对此不做限制。
一种可能的实现中,电子设备可以预分配一个存储空间用于存储该修改标记。那么,响应于目标应用的启动操作,电子设备可以在该预分配的存储空间查询是否存在该修改标记。示例性地,可以通过预设的存储路径查找到该预分配的存储空间。
503、若修改标记不存在,删除缓存的着色器二进制文件。
示例性地,若电子设备检查出修改标记不存在,则表明该目标应用的着色器未被修改。那么,电子设备可以删除缓存的目标应用的着色器二进制文件。示例性地,该缓存的目标应用的着色器二进制文件为目标应用自带的原生二进制着色器文件。示例性地,可以删除目标应用中部分或全部的片段着色器二进制文件,具体根据实际应用需求确定,本申请实施例对此不做限制。下面主要以一个片段着色器为例介绍,其它的片段着色器同理,则不再赘述。
示例性地,以电子设备通过OpenGL或OpenGL ES来渲染目标应用的画面为例,那么,可以通过DeleteGameBinaryFiles()函数来删除该目标应用的着色器二进制文件。可以理解的是,此处仅为示例,不构成对本申请实施例的限制。
504、创建修改标记。
示例性地,若电子设备检查出修改标记不存在,那么,可以创建一个修改标记。例如创建一个修改标记文件或者生成预设标识等。然后将该修改标记保存到预分配的存储空间中。
可以理解的是,本申请实施例对上述创建修改标记和删除缓存的着色器二进制文件这两个操作的先后顺序不做限制。或者,上述创建修改标记的操作可以是在后面步骤505、506或507之后执行,本申请实施例对此不做限制。
由于该修改标记的存在,使得电子设备不用每次启动上述目标应用时都执行上述步骤503和步骤504以及下面步骤505和步骤506的操作。而是在首次启动该目标应用时执行这些步骤即可,从而节省计算资源。
505、以全局变量的形式定义纹理等级偏移参数并赋值。
示例性地,上述删除缓存的着色器二进制文件后,可以以全局变量的形式定义一个纹理等级偏移参数。例如,可以以统一(uniform)变量的形式定义该纹理等级偏移参数。然后,解析预设配置文件获取设定的纹理等级偏移值,并将该纹理等级偏移值赋值给该纹理等级偏移参数。示例性地,可以通过修改该配置文件的值来修改该纹理等级偏移值。
另一种可能的实现中,纹理等级偏移值可以是固定地,并且存储在预设的存储空间中。那么,可以从该预设的存储空间获取该固定的纹理等级偏移值赋值给该纹理等级偏移参数。
506、在目标应用加载过程中,在着色器的texture函数中添加纹理等级偏移参数,并重新编译修改后的着色器获得新的着色器二进制文件。
示例性地,由于前面删除了缓存的着色器二进制文件,在目标应用加载过程中,会重新加载和编译着色器的源程序。在加载着色器源程序的过程中,可以在着色器源程序的texture函数中添加纹理等级偏移参数。并且在着色器源程序中添加纹理等级偏移参数的声明。在后续的介绍中,编译之前的着色器指的是着色器源程序,编译之后的着色器指的是着色器二进制文件。
示例性地,可以通过正则表达式匹配的方式来实现纹理等级偏移参数及其声明的添加。具体的,可以通过定义的正则表达式匹配到着色器的主(main)函数,然后通过正则替换函数在主函数前面添加纹理等级偏移参数的声明。此外,可以通过定义的另外一个正则表达式匹配到着色器的texture函数,然后通过正则替换函数在texture函数中添加纹理等级偏移参数。为了便于理解,下面以伪代码的形式举例说明。
示例性地,通过正则表达式匹配的方式在着色器中添加纹理等级偏移参数声明的伪代码可以如下:
“定义着色器中纹理等级偏移参数的变量名;
将以uniform变量的形式定义的纹理等级偏移参数声明赋值给一个参数;
利用正则表达式匹配着色器的主函数;
利用正则替换函数在主函数中添加纹理等级偏移参数的声明;”。
为了便于理解,下面进一步示出通过正则表达式匹配的方式在着色器中添加纹理等级偏移参数声明的程序代码的示例如下:
“MIPMAP_LOD_BIAS_NAME=g_setlodbias";//定义着色器中纹理等级偏移参数的变量名
replaceStr="uniform mediump float"+MIPMAP_LOD_BIAS_NAME;//将以uniform变量的形式定义的纹理等级偏移参数声明赋值给一个参数
mainFunPattern=("(void[]*main[]*\\([]*\\))");//利用正则表达式匹配着色器的主函数中的“void main”
auto result1=regex_replace(*string,mainFunPattern,replaceStr);//利用正则替换函数在主函数中添加纹理等级偏移参数的声明”。
具体的,上述程序代码的示例中,“"uniform mediump float"+IPMAP_LOD_BIAS_NA ME”表示纹理等级偏移参数声明的字符串,赋值给replaceStr后,则replaceStr可以表示纹理等级偏移参数声明的字符串。上述"(void[]*main[]*\\([]*\\))"为用于匹配主函数中“void main”的正则表达式;赋值给mainFunPattern后,则mainFunPattern可以表示用于匹配主函数“void main”的正则表达式。上述“result1=regex_replace(*string,mainFunPattern,replaceSt r)”中,string表示要替换的着色器源程序,再结合前述的mainFunPattern和replaceStr这两个参数,可以实现在void main的位置增加一行,并在新增的这一行中添加纹理等级偏移参数的声明。然后,result1表示添加声明后返回的修改后的着色器源程序。
示例性地,一种可能的实现中,还可以通过如下程序代码来判断纹理等级偏移参数的声明是否添加成功:
“if regex_search(result1,std::regex(replaceStr))
return true
else
return false”。
可以看到,通过上述的程序代码示例,可以实现将纹理等级偏移参数的声明添加到着色器的主函数前面。
在着色器中主函数前面添加以uniform变量的形式定义的纹理等级偏移参数的声明,可以使得后面渲染过程中可以通过uniform参数传递方式,将纹理等级偏移参数暴露给openG L或openGLES的接口,以用于修改该纹理等级偏移参数的值。
示例性地,在着色器的texture函数中添加纹理等级偏移参数可以沿用上述定义的纹理等级偏移参数的变量名。则,通过正则表达式匹配的方式在着色器的texture函数中添加纹理等级偏移参数的伪代码可以如下:
“利用正则表达式匹配着色器的texture函数;
利用正则替换函数在texture函数中添加纹理等级偏移参数;”。
为了便于理解,下面进一步示出通过正则表达式匹配的方式在着色器中添加纹理等级偏移参数的程序代码的示例如下:
“std::regex texPattern("(texture[]*\\([]*[\\w]*[]*,[]*[\\w.]*[]*)(\\))");//利用正则表达式匹配着色器的texture函数
sprintf_s(replaceStr,128,"$1,%s$2",MIPMAP_LOD_BIAS_NAME);//将纹理等级偏移参数(即MIPMAP_LOD_BIAS_NAME)按照一定的格式输出到字符串(即输出到replaceSt r),并存到缓冲区;
result2=regex_replace(result1,texPattern,replaceStr);//利用正则替换函数在texture函数中添加纹理等级偏移参数”。
具体的,上述程序代码的示例中,上述"(texture[]*\\([]*[\\w]*[]*,[]*[\\w.]*[]*)(\\))"为用于匹配texture函数的正则表达式,可以用texPattern来表示。通过“sprintf_s(replaceStr,128,"$1,%s$2",MIPMAP_LOD_BIAS_NAME)”,replaceStr可以表示纹理等级偏移参数MIP MAP_LOD_BIAS_NAME。上述“result2=regex_replace(result1,texPattern,replaceStr)”中,result1即为上述添加声明后返回的修改后的着色器源程序,即该着色器源程序为要进一步修改的程序。再结合前述的texPattern和replaceStr这两个参数,可以实现在该着色器源程序的texture函数中添加纹理等级偏移参数。然后,result2表示完成了纹理等级偏移参数及其声明的添加后返回的着色器源程序。
通过上述的序代码示例,可以实现将纹理等级偏移参数添加到着色器texture函数中。
为了便于理解,下面示例性示出修改前和修改后的着色器的部分程序伪代码示例。
修改前的着色器的部分程序伪代码示例如下:
修改后的着色器的部分程序伪代码示例如下:
比较上述修改前和修改后的着色器的部分程序伪代码可以看到,修改后的着色器在主函数前面添加了纹理等级偏移参数声明,例如添加了“uniform mediump float g_setlodbias”。此外,修改前的着色器的texture函数包括两个参数:参数1和参数2。关于该两个参数的介绍可以参考前述术语介绍中对应的描述,此处不赘述。而修改后的着色器的texture函数包括三个参数:参数1、参数2和参数3。相比于修改前的texture函数新增了一个参数3。该参数3即为上述纹理等级偏移参数。该参数3例如可以是上述g_setlodbias参数。
可以理解的是,上述程序代码以及参数名称等仅为示例,不构成对本申请实施例的限制。具体实现过程中,对于实现上述功能可以变换程序代码的写法或修改参数名称,本申请实施例对此不做限制。
完成上述纹理等级偏移参数及其声明的添加后可以获得新的着色器程序代码。然后,重新编译该新的着色器程序代码获得新的着色器二进制文件。并缓存该新的着色器二进制文件。
507、在上述获得新的着色器二进制文件后,或者若上述步骤502检查出修改标记存在,基于新的着色器二进制文件渲染画面。
示例性地,上述获得新的着色器二进制文件后,可以基于该新的着色器二进制文件来采样和输出对应纹理坐标的颜色,以用于渲染画面。或者,若上述步骤502检查出修改标记存在,表明着色器已经被修改,目标应用不是首次启动,当前缓存的着色器即为该新的着色器二进制文件。因此,可以基于该新的着色器二进制文件来采样和输出对应纹理坐标的颜色,以用于渲染画面。具体的,可以是调用该新的着色器二进制文件运行该新的着色器,以调用修改后的texture函数采样对应的纹理图案,进而采样和输出对应纹理坐标的颜色,以用于渲染画面。
在基于该新的着色器二进制文件来采样和输出对应纹理坐标的颜色的过程中,可以通过uniform参数传递的方式将设定的纹理等级偏移值赋值给该新的着色器的texture函数中的纹理等级偏移参数。
例如,可以通过glUniform1f()函数将设定的纹理等级偏移值赋值给该新的着色器的texture函数中的纹理等级偏移参数。示例性地,首先可以通过glGetUniformLocation()函数返回全局变量纹理等级偏移参数的名称的位置信息(该位置信息例如可以是一个向量)。然后,glUniform1f()可以基于该位置信息找到着色器中texture函数的纹理等级偏移参数,并赋值给该纹理等级偏移参数。为了便于理解,示例性示出程序代码的示例如下:
“biasLocation=glGetUniformLocation(参数A,参数B);
glUniform1f(参数C,参数D);”。
其中,glGetUniformLocation函数中的参数A指定要查询的程序对象。glGetUniformLoc ation函数中的参数B指示要查询位置的变量的名称。上述要查询着色器中texture函数的纹理等级偏移参数,那么,该参数B指示要查询位置的变量的名称可以是上述MIPMAP_LOD_BIAS_NAME。biasLocation即为glGetUniformLocation函数返回的位置信息。glUniform1f函数中,参数C指明更改的变量的位置,即参数C=biasLocation。参数D指明变量使用的新值,即指明纹理等级偏移参数的新的取值。结合前面步骤505,已经将配置文件中设定的纹理等级偏移值赋值给该纹理等级偏移参数。因此,该参数D的取值即为配置文件中设定的纹理等级偏移值。即glUniform1f函数将该配置文件中设定的纹理等级偏移值赋值给该新的着色器的texture函数中的纹理等级偏移参数。
上述将该配置文件中设定的纹理等级偏移值赋值给该新的着色器的texture函数中的纹理等级偏移参数后,可以基于该纹理等级偏移值计算出采样的纹理图案的纹理等级。示例性地,基于前面关于纹理的创建和使用术语介绍可知,glTexImage2D函数中通过GLint level参数指定了多级渐远纹理的等级级别。那么,可以将该指定的等级级别加上前面设定的纹理等级偏移值即可得到用于采样的纹理图案的纹理等级。假设用于采样的纹理图案的纹理等级用level_final来表示,设定的纹理等级偏移值用bias来表示,glTexImage2D函数中指定的多级渐远纹理的等级级别用level_base来表示。那么,level_final=level_base+bias。
上述计算出采样的纹理图案的纹理等级,可以基于该纹理等级采样对应的纹理图案来着色和渲染画面。
一种可能的实现中,上述着色器的texture函数中的纹理等级偏移参数的取值是通过配置文件来配置的,因此可以通过修改配置文件来修改该纹理等级偏移参数的取值,从而可以满足不同应用场景的需求,扩大本方案的适用场景。
另一种可能的实现中,不同对象的渲染可以采用不同的纹理等级偏移参数取值,进而可以更细粒度地优化画面中各个对象的分辨率,以进一步提高画面的分辨率。
上述方案中,通过修改着色器来引入纹理等级偏移参数,并通过配置文件设定具体的纹理等级偏移值赋值给该纹理等级偏移参数,以达到适当调整采样的纹理图案的纹理等级的目的。进而可以根据对应的场景需求渲染出质量匹配的画面。示例性地,上述纹理等级偏移参数的取值可以是正值或者负值。若取负值,表示选择纹理等级时向低等级纹理偏移,即取纹理精度更高的纹理,渲染得到的画面质量提高。若取正值,表示选择纹理等级时向高等级纹理偏移,即取纹理精度更低的纹理,渲染得到的画面质量降低。
一种可能的实现中,可以示例性参见图6,本申请实施例提供的渲染处理方法还可以包括步骤506A。即在上述步骤506获得新的着色器二进制文件后,或者在上述步骤502检查出修改标记存在后,可以先判断本次渲染是否是降分辨率渲染。
示例性地,可以通过颜色缓冲区(colorAttachment)的大小来判断是否是降分辨率渲染。颜色缓冲区用于存储渲染后的画面颜色数据。若是降分辨率渲染,那么,该颜色缓冲区的大小较小。因此,可以获取该颜色缓冲区的大小,并将该颜色缓冲区的大小与预设的阈值比较。若该颜色缓冲区的大小比该阈值小,那么可以判断出是降分辨率渲染。反之,若该颜色缓冲区的大小比该阈值大,那么可以判断出不是降分辨率渲染。
若是降分辨率渲染,那么电子设备可以执行上述步骤507的操作,并且上述纹理等级偏移参数的取值是负值。以采样精度更高的纹理图像。若不是降分辨率渲染,那么电子设备可以执行图6中508的操作。即先令texture函数中的纹理等级偏移参数的取值等于0后,再基于新的着色器二进制文件渲染画面。示例性地,可以参考前述通过glUniform1f函数将该配置文件中设定的纹理等级偏移值,赋值给该新的着色器的texture函数中的纹理等级偏移参数的实现过程,来实现将0赋值给texture函数中的纹理等级偏移参数。此处不再赘述。
上述方案中,在降分辨率渲染的应用场景中,可以通过修改着色器来引入纹理等级偏移参数,并将小于0的纹理等级偏移值赋值给该纹理等级偏移参数,以用于选择低等级的纹理图案,即选择精度更高的纹理图像。进而渲染出质量较好的画面,达到渲染细节更细致的效果。此外,在不是降分辨率渲染的应用场景中,可以不再调整采样的纹理图案的等级,采用默认的或者上述glTexImage2D函数指定的纹理等级来采样纹理图案。进而渲染出高清的画面来显示。
一种可能的实现中,上述电子设备通过正则替换的方式修改了上述目标应用中的着色器后,可以把修改后的着色器程序代码打包发送给其它电子设备使用。以使得其它电子设备无需再执行着色器修改的操作,节省计算资源。
一种可能的实现中,上述基于新的着色器二进制文件渲染得到的画面可以作为AI超分渲染的输入。通过AI超分算法可以获得分辨率更高的渲染画面。本方案中,若上述将小于0的纹理等级偏移值赋值给纹理等级偏移参数,以用于选择低等级高精度的纹理图案,进而渲染出质量较好的画面。并将该质量较好的画面作为AI超分渲染的输入,则可以进一步提高渲染得到的画面的分辨率。并且极大降低画面失真,提升AI超分结果中物体细节的渲染精度,有效改善了AI超分渲染的效果。
综上所述,本申请实施例提供了一种通过软件来实现调整采样的纹理图案的纹理等级的方案,该方案可以利用OpenGL或利用OpenGLES的相关接口来实现。虽然高通在其控制面板(Control panel)中,集成了修改相关的渲染精度偏移量的按钮,但无相关接口对外开放。具体的,OpenGL中提供了GL_TEXTURE_LOD_BIAS参数,可通过glTexParameterf接口进行设置。此外,在OpenGL ES中,该GL_TEXTURE_LOD_BIAS参数并不在标准中,而是作为扩展存在,其扩展参数名对应为GL_TEXTURE_LOD_BIAS_EXT。这两个参数的接口由各个硬件厂家自行实现,但是目前高通或联发科(MTK)等厂商均无实现支持此接口。即使后续高通或MTK平台通过硬件实现了OpenGL中类似glTexParameterf的接口,则在移动端进行图像渲染时,当需要修改纹理等级时,可直接调用其硬件实现纹理等级的修改。但是其实现方案和本方案的实现过程完全不同。
本申请实施例还提供了一种电子设备,电子设备包括一个或多个处理器和一个或多个存储器;其中,一个或多个存储器与一个或多个处理器耦合,一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,使得电子设备执行上述实施例描述的方法。
本申请实施例还一种芯片系统,该芯片系统应用于电子设备,该芯片系统包括一个或多个处理器,该处理器用于调用计算机指令以使得所述电子设备执行上述实施例描述的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述实施例描述的方法。
本申请实施例还提供了一种计算机可读存储介质,包括指令,当指令在电子设备上运行时,使得电子设备执行上述实施例描述的方法。
可以理解的是,本申请的各实施方式可以任意进行组合,以实现不同的技术效果。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid StateDisk)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
总之,以上所述仅为本申请技术方案的实施例而已,并非用于限定本申请的保护范围。凡根据本申请的揭露,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (16)
1.一种渲染处理方法,其特征在于,所述方法包括:
启动目标应用;
通过所述目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案,并获取所述纹理图案中第一纹理坐标对应的颜色;所述第一texture函数包括第一参数、第二参数和第三参数,所述第一参数用于调用所述纹理图案,所述第二参数用于指示所述第一纹理坐标,所述第三参数用于指示纹理等级偏移值,所述纹理等级偏移值用于确定所述纹理图案的纹理等级;
基于获取的所述颜色渲染所述目标应用的画面。
2.根据权利要求1所述的方法,其特征在于,所述第三参数为统一uniform变量;所述方法还包括:通过uniform参数传递方式将所述纹理等级偏移值赋值给所述第三参数。
3.根据权利要求2所述的方法,其特征在于,所述通过uniform参数传递方式将所述纹理等级偏移值赋值给所述第三参数,包括:
通过uniform参数传递方式将配置文件中的所述纹理等级偏移值赋值给所述第三参数。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
响应于所述目标应用的启动,删除所述目标应用缓存的第二片段着色器的二进制文件;
在所述目标应用加载的过程中,修改所述第二片段着色器的源程序,获得所述第一片段着色器的源程序。
5.根据权利要求4所述的方法,其特征在于,所述修改所述第二片段着色器的源程序,包括:
在所述第二片段着色器的源程序包括的第二texture函数中添加所述第三参数,获得所述第一texture函数;所述第二texture函数包括所述第一参数和所述第二参数。
6.根据权利要求4或5所述的方法,其特征在于,所述修改所述第二片段着色器的源程序,包括:
在所述第二片段着色器的源程序中添加所述第三参数的声明。
7.根据权利要求4-6任一项所述的方法,其特征在于,所述修改所述第二片段着色器的源程序,获得所述第一片段着色器的源程序之后,还包括:
编译所述第一片段着色器的源程序获得所述第一片段着色器的二进制文件;
保存所述第一片段着色器的二进制文件。
8.根据权利要求7所述的方法,其特征在于,所述通过所述目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案,包括:
调用所述第一片段着色器的二进制文件运行所述第一片段着色器,以调用所述第一texture函数采样所述纹理图案。
9.根据权利要求4-8任一项所述的方法,其特征在于,所述响应于所述目标应用的启动,删除所述目标应用缓存的第二片段着色器的二进制文件,包括:
响应于所述目标应用的启动,检查是否存在修改标记;所述修改标记用于标识所述第一片段着色器被修改;
在未存在所述修改标记的情况下,删除所述目标应用缓存的第二片段着色器的二进制文件。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述通过所述目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案,包括:
在颜色缓冲区的大小指示采用降分辨率渲染的方式渲染画面的情况下,通过所述目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案。
11.根据权利要求10所述的方法,其特征在于,所述纹理等级偏移值小于零,所述基于获取的所述颜色渲染所述目标应用的画面之后,还包括:
通过人工智能AI超分算法将获得的渲染画面进行AI超分渲染;
显示所述AI超分渲染后的画面。
12.根据权利要求1-11任一项所述的方法,其特征在于,所述通过所述目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案,包括:
在颜色缓冲区的大小指示不采用降分辨率渲染的方式渲染画面的情况下,将零赋值给所述第三参数,并通过所述目标应用的第一片段着色器调用第一纹理texture函数采样纹理图案。
13.一种电子设备,其特征在于,包括:触控屏,一个或多个处理器,以及一个或多个存储器;所述一个或多个处理器与所述触控屏,以及所述一个或多个存储器耦合;所述一个或多个存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述一个或多个处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1-12中的任一项所述的方法。
14.一种芯片系统,其特征在于,所述芯片系统应用于电子设备,所述芯片系统包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述电子设备执行如权利要求1-12中任一项所述的方法。
15.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1-12中任一项所述的方法。
16.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行如权利要求1-12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310835649.4A CN117689796B (zh) | 2023-07-07 | 一种渲染处理方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310835649.4A CN117689796B (zh) | 2023-07-07 | 一种渲染处理方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117689796A true CN117689796A (zh) | 2024-03-12 |
CN117689796B CN117689796B (zh) | 2024-10-22 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070171234A1 (en) * | 2006-01-24 | 2007-07-26 | Roger Crawfis | System and method for asynchronous continuous-level-of-detail texture mapping for large-scale terrain rendering |
CN113269882A (zh) * | 2021-06-04 | 2021-08-17 | 福建天晴在线互动科技有限公司 | 一种基于虚拟纹理的地形渲染方案及系统 |
WO2022007862A1 (zh) * | 2020-07-08 | 2022-01-13 | 华为技术有限公司 | 图像处理方法、系统、电子设备及计算机可读存储介质 |
CN115904563A (zh) * | 2021-09-30 | 2023-04-04 | 荣耀终端有限公司 | 应用程序启动中的数据处理方法、装置和存储介质 |
CN116051351A (zh) * | 2022-08-22 | 2023-05-02 | 荣耀终端有限公司 | 一种特效处理方法和电子设备 |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070171234A1 (en) * | 2006-01-24 | 2007-07-26 | Roger Crawfis | System and method for asynchronous continuous-level-of-detail texture mapping for large-scale terrain rendering |
WO2022007862A1 (zh) * | 2020-07-08 | 2022-01-13 | 华为技术有限公司 | 图像处理方法、系统、电子设备及计算机可读存储介质 |
CN113269882A (zh) * | 2021-06-04 | 2021-08-17 | 福建天晴在线互动科技有限公司 | 一种基于虚拟纹理的地形渲染方案及系统 |
CN115904563A (zh) * | 2021-09-30 | 2023-04-04 | 荣耀终端有限公司 | 应用程序启动中的数据处理方法、装置和存储介质 |
CN116051351A (zh) * | 2022-08-22 | 2023-05-02 | 荣耀终端有限公司 | 一种特效处理方法和电子设备 |
Non-Patent Citations (3)
Title |
---|
MARWAN ABDELLAH; AYMAN ELDEIB; AMR SHAARAWI: "Constructing a functional Fourier volume rendering pipeline on heterogeneous platforms", IEEE, 7 March 2013 (2013-03-07) * |
于平;: "基于GPU加速的辐射度光照算法的研究及应用", 国外电子测量技术, no. 11, 15 November 2016 (2016-11-15) * |
张曼;陈宁;: "图像识别智能化处理技术在塑料齿轮缺齿检测中的应用", 塑料科技, no. 05, 9 May 2019 (2019-05-09) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115473957B (zh) | 一种图像处理方法和电子设备 | |
WO2020000448A1 (zh) | 一种柔性屏幕的显示方法及终端 | |
CN113935898A (zh) | 图像处理方法、系统、电子设备及计算机可读存储介质 | |
CN114756184B (zh) | 协同显示方法、终端设备及计算机可读存储介质 | |
CN116483734B (zh) | 一种基于编译器的插桩方法、系统及相关电子设备 | |
CN113723397B (zh) | 一种截屏方法及电子设备 | |
CN116051351B (zh) | 一种特效处理方法和电子设备 | |
CN115460343B (zh) | 图像处理方法、设备及存储介质 | |
CN115686182B (zh) | 增强现实视频的处理方法与电子设备 | |
CN115482143B (zh) | 应用的图像数据调用方法、系统、电子设备及存储介质 | |
CN114691248B (zh) | 显示虚拟现实界面的方法、装置、设备和可读存储介质 | |
CN117689796B (zh) | 一种渲染处理方法及电子设备 | |
CN117290004A (zh) | 组件预览的方法和电子设备 | |
CN117009005A (zh) | 一种显示方法、汽车和电子设备 | |
CN115994006A (zh) | 动画效果显示方法及电子设备 | |
CN115599565A (zh) | 发送剪贴板数据的方法和装置 | |
CN113495733A (zh) | 主题包安装方法、装置、电子设备及计算机可读存储介质 | |
CN117689796A (zh) | 一种渲染处理方法及电子设备 | |
CN113867851A (zh) | 电子设备操作引导信息录制方法、获取方法和终端设备 | |
CN116795476B (zh) | 一种删除壁纸的方法及电子设备 | |
CN117707562B (zh) | 参数更新方法和终端设备 | |
CN116700578B (zh) | 图层合成方法、电子设备以及存储介质 | |
CN117806745B (zh) | 界面生成方法及电子设备 | |
WO2024046010A1 (zh) | 一种界面显示方法、设备及系统 | |
CN116991532A (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 |