OpenGL(Skia)和Open(默认)有什么区别?选哪个比较好?
skia是一个canvas api,面向2d painter。是个平面图层生成器,就当是程序版的photoshop。opengl是个驱动显卡硬件的api,面向3D流水线,就像maya/blender,输出空间渲染结果。看你想画什么了。日常用户的话,显卡强就选用opengl(但是有些不稳定)。实验性内容,按照谷歌的尿性,可能是未来Android OpenGL的一个重点变化,目前看来和普通用户日常使用方面完全无关(几乎没有可见性的性能变化),甚至部分app还会出现各种渲染错误(微信扫一扫方向不正确等)。OpenGL的高效实现(利用了图形加速硬件)存在于Windows,部分UNIX平台和Mac OS。这些实现一般由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。开放源代码库Mesa是一个纯基于软件的图形API,它的代码兼容于OpenGL。但是,由于许可证的原因,它只声称是一个“非常相似”的API。发展历史:OpenGL规范由1992年成立的OpenGL架构评审委员会(ARB)维护。ARB由一些对创建一个统一的、普遍可用的API特别感兴趣的公司组成。根据OpenGL网站,2002年6月的ARB投票成员包括3Dlabs、Apple Computer、ATI Technologies。Dell Computer、Evans & Sutherland、Hewlett-Packard、IBM、Intel、Matrox、NVIDIA、SGI和Sun Microsystems,Microsoft曾是创立成员之一,但已于2003年3月退出。
OpenGL(Skia)和Open(默认)有什么区别,选哪个比较好?
选择默认的好,因为默认的话相对来说兼容性比较好,而且其次速度会比较快一些,如果随意的去改程序的话,可能会对效果各方面造成影响。简介OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟实境、科学可视化程序和电子游戏开发。OpenGL的高效实现(利用了图形加速硬件)存在于Windows,部分UNIX平台和Mac OS。这些实现一般由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。开放源代码库Mesa是一个纯基于软件的图形API,它的代码兼容于OpenGL。但是,由于许可证的原因,它只声称是一个“非常相似”的API。
opengl和skia有什么不一样的地方呢?
skia是一个canvas api,面向2d painter。是个平面图层生成器,就当是程序版的photoshop。opengl是个驱动显卡硬件的api,面向3D流水线,就像maya/blender,输出空间渲染结果。看你想画什么了。日常用户的话,显卡强就选用opengl(但是有些不稳定)。实验性内容,按照谷歌的尿性,可能是未来Android OpenGL的一个重点变化,目前看来和普通用户日常使用方面完全无关(几乎没有可见性的性能变化),甚至部分app还会出现各种渲染错误(微信扫一扫方向不正确等)。OpenGL的高效实现(利用了图形加速硬件)存在于Windows,部分UNIX平台和Mac OS。这些实现一般由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。开放源代码库Mesa是一个纯基于软件的图形API,它的代码兼容于OpenGL。但是,由于许可证的原因,它只声称是一个“非常相似”的API。发展历史:OpenGL规范由1992年成立的OpenGL架构评审委员会(ARB)维护。ARB由一些对创建一个统一的、普遍可用的API特别感兴趣的公司组成。根据OpenGL网站,2002年6月的ARB投票成员包括3Dlabs、Apple Computer、ATI Technologies。Dell Computer、Evans & Sutherland、Hewlett-Packard、IBM、Intel、Matrox、NVIDIA、SGI和Sun Microsystems,Microsoft曾是创立成员之一,但已于2003年3月退出。
安卓手机录屏怎么弄?
如果使用的是华为手机,以华为Mate30手机为例:
一、使用组合键录屏
同时按住电源键和音量上键启动录屏,再次按住结束录屏。
二、使用快捷开关录屏
1、从状态栏向下滑出通知面板(可继续下滑),点击屏幕录制,启动录屏。
2、点击屏幕上方的红色计时按钮,结束录屏。
3、进入图库查看录屏结果。
三、使用双指关节录屏
1、使用指关节前,请进入 设置 > 辅助功能 > 快捷启动及手势 > 录屏 ,确保录屏开关已开启。
2、双指指关节稍微用力并连续快速地双击屏幕启动录屏,再次双击结束录屏。
四、边录屏,边解说
录屏时,您还可以开启麦克风,边录屏,边解说。
启动录屏后,点击麦克风图标让其处于开启状态,就可以同步记录声音。
当麦克风图标处于关闭状态时,此时仅可以收录系统音(如:音乐)。如您不想收录任何系统音,请在录屏前将手机调成静音并关闭音乐等媒体音。
安卓手机怎么录屏?
每一款手机的录屏功能都不一样,大部分都可以通过下拉控制中心,找到“屏幕录制”这个选项,直接点击就可以开始录制了。但是手机自带的录屏功能,一般录制的分辨率都不是很高,因此建议大家都能选择一款简单好用还能录制高清稳定视频的专业录屏软件。直接点击获取--->嗨格式录屏大师嗨格式录屏大师是一款操作简单,功能齐全的超高清录屏软件,拥有七种录屏模式,包括全屏录制、区域录制、游戏录制、应用窗口录制、跟随鼠标录制、摄像头录制,全面覆盖生活、工作与休闲娱乐场景,满足绝大多数的使用需求!目前嗨格式录屏大师支持最高120fps恒定帧率、320kbps音频输出以及4096*2160输出分辨率,最大程度上让视频还原最真画质,提高视频质量。以上就是关于这个问题的回答,对嗨格式录屏大师感兴趣的小伙伴抓紧时间下载试试吧!
android软件开发的架构
Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个Activity类(class)负责创建视窗(window),一个活动中的Activity就是在foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由和AIDL连结,达到复数程序同时运行的效果。如果运行中的Activity全部画面被其他Activity取代时,该Activity便被停止(stopped),甚至被系统清除(kill)。View等同于J2ME的Displayable,程序人员可以通过View类与“XMLlayout”档将UI放置在视窗上,Android1.5的版本可以利用View打造出所谓的Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的AndroidHero手机即含有大量的widget。至于ViewGroup是各种layout的基础抽象类(abstractclass),ViewGroup之内还可以有ViewGroup。View的构造函数不需要在Activity中调用,但是Displayable的是必须的,在Activity中,要通过()来从XML中取得View,Android的View类的显示很大程度上是从XML中读取的。View与事件(event)息息相关,两者之间通过Listener结合在一起,每一个View都可以注册一个eventlistener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.。另外还有Image等同于J2ME的BitMap。在模拟器上运行仿真是虚拟设备(AVD),我们需要配置来运行我们的Android应用程序。步骤1、开放的AVD管理步骤2、新的按钮,点击添加新设备,并配置您的设备设置。步骤3、会有一个结果窗口显示所有已配置你上一屏幕选择。步骤4、按“确定”,你将会看到你的设备列在有你可以关闭此窗口。步骤5、运行你的Android应用程序项目从Eclipse,如果只有一个AVD配置,它会自动部署的应用程序也会出现一个窗口,选择你的图片。仿真器将开始。在设备上运行Android应用程序可以直接部署在Android设备上,这几个配置所需要的。步骤1、在调试模式的设置可以设置应用程序:Android的元真可调试属性。ADT8这是默认的。步骤2、您的设备上启用USB调试:Android3.2或以上转至设置>应用程序>开发和启用USB调试。在Android4更新,这是开发商选择设置>。注:在Android4.2更新,开发者选项是默认隐藏。可以,去设定>android的版本号。返回先前屏幕找到开发商选择。步骤3、安装USB驱动程序为您的设备,计算机识别你的设备。步骤4、一旦设置和您的设备通过USB连接,从Eclipse菜单栏安装您的应用程序在设备上选择运行>运行(或运行>调试)。操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(VirtualMachine)。Bionic是Android改良libc的版本。Android同时包含了Webkit,所谓的Webkit就是AppleSafari浏览器背后的引擎。Surfaceflinger是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的BionicLibc。Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideoMultimediaFramework(PVMF)、OperatingSystemLibrary(OSCL)、Common、OpenMAX。Android使用skia为核心图形引擎,搭配OpenGL/ES。skia与LinuxCairo功能相当,但相较于LinuxCairo,skia功能还只是阳春型的。2005年Skia公司被Google收购,2007年初,SkiaGL源码被公开,Skia也是GoogleChrome的图形引擎。Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过类(Column)取得共用数据库。Android的中间层多以Java实现,并且采用特殊的Dalvik虚拟机(DalvikVirtualMachine)。Dalvik虚拟机是一种“暂存器型态”(RegisterBased)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。Dalvik虚拟机可以有多个实例(instance),每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。Android的HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL的目的是为了把Androidframework与Linuxkernel隔开,让Android不至过度依赖Linuxkernel,以达成kernelindependent的概念,也让Androidframework的开发能在不考虑驱动程序实现的前提下进行发展。HALstub是一种代理人(proxy)的概念,stub是以*.so档的形式存在。Stub向HAL“提供”操作函数(operations),并由Androidruntime向HAL取得stub的operations,再callback这些操作函数。HAL里包含了许多的stub(代理人)。Runtime只要说明“类型”,即moleID,就可以取得操作函数。Android是运行于Linuxkernel之上,但并不是GNU/Linux。因为在一般GNU/Linux里支持的功能,Android大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android为了达到商业应用,必须移除被GNUGPL授权证所约束的部份,例如Android将驱动程序移到userspace,使得Linuxdriver与Linuxkernel彻底分开。bionic/libc/kernel/并非标准的kernelheaderfiles。Android的kernelheader是利用工具由Linuxkernelheader所产生的,这样做是为了保留常数、数据结构与宏。Android的Linuxkernel控制包括安全(Security),存储器管理(MemoryManagemeat),程序管理(ProcessManagement),网络堆栈(NetworkStack),驱动程序模型(DriverModel)等。下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo是Android用来辅助Git工作的一个工具。
android软件开发的架构(android的系统架构)
Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个Activity类(class)负责创建视窗(window),一个活动中的Activity就是在foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由和AIDL连结,达到复数程序同时运行的效果。如果运行中的Activity全部画面被其他Activity取代时,该Activity便被停止(stopped),甚至被系统清除(kill)。View等同于J2ME的Displayable,程序人员可以通过View类与“XMLlayout”档将UI放置在视窗上,Android1.5的版本可以利用View打造出所谓的Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的AndroidHero手机即含有大量的widget。至于ViewGroup是各种layout的基础抽象类(abstractclass),ViewGroup之内还可以有ViewGroup。View的构造函数不需要在Activity中调用,但是Displayable的是必须的,在Activity中,要通过()来从XML中取得View,Android的View类的显示很大程度上是从XML中读取的。View与事件(event)息息相关,两者之间通过Listener结合在一起,每一个View都可以注册一个eventlistener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.。另外还有Image等同于J2ME的BitMap。在模拟器上运行仿真是虚拟设备(AVD),我们需要配置来运行我们的Android应用程序。步骤1、开放的AVD管理步骤2、新的按钮,点击添加新设备,并配置您的设备设置。步骤3、会有一个结果窗口显示所有已配置你上一屏幕选择。步骤4、按“确定”,你将会看到你的设备列在有你可以关闭此窗口。步骤5、运行你的Android应用程序项目从Eclipse,如果只有一个AVD配置,它会自动部署的应用程序也会出现一个窗口,选择你的图片。仿真器将开始。在设备上运行Android应用程序可以直接部署在Android设备上,这几个配置所需要的。步骤1、在调试模式的设置可以设置应用程序:Android的元真可调试属性。ADT8这是默认的。步骤2、您的设备上启用USB调试:Android3.2或以上转至设置>应用程序>开发和启用USB调试。在Android4更新,这是开发商选择设置>。注:在Android4.2更新,开发者选项是默认隐藏。可以,去设定>android的版本号。返回先前屏幕找到开发商选择。步骤3、安装USB驱动程序为您的设备,计算机识别你的设备。步骤4、一旦设置和您的设备通过USB连接,从Eclipse菜单栏安装您的应用程序在设备上选择运行>运行(或运行>调试)。操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(VirtualMachine)。Bionic是Android改良libc的版本。Android同时包含了Webkit,所谓的Webkit就是AppleSafari浏览器背后的引擎。Surfaceflinger是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的BionicLibc。Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideoMultimediaFramework(PVMF)、OperatingSystemLibrary(OSCL)、Common、OpenMAX。Android使用skia为核心图形引擎,搭配OpenGL/ES。skia与LinuxCairo功能相当,但相较于LinuxCairo,skia功能还只是阳春型的。2005年Skia公司被Google收购,2007年初,SkiaGL源码被公开,Skia也是GoogleChrome的图形引擎。Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过类(Column)取得共用数据库。Android的中间层多以Java实现,并且采用特殊的Dalvik虚拟机(DalvikVirtualMachine)。Dalvik虚拟机是一种“暂存器型态”(RegisterBased)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。Dalvik虚拟机可以有多个实例(instance),每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。Android的HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL的目的是为了把Androidframework与Linuxkernel隔开,让Android不至过度依赖Linuxkernel,以达成kernelindependent的概念,也让Androidframework的开发能在不考虑驱动程序实现的前提下进行发展。HALstub是一种代理人(proxy)的概念,stub是以*.so档的形式存在。Stub向HAL“提供”操作函数(operations),并由Androidruntime向HAL取得stub的operations,再callback这些操作函数。HAL里包含了许多的stub(代理人)。Runtime只要说明“类型”,即moleID,就可以取得操作函数。Android是运行于Linuxkernel之上,但并不是GNU/Linux。因为在一般GNU/Linux里支持的功能,Android大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android为了达到商业应用,必须移除被GNUGPL授权证所约束的部份,例如Android将驱动程序移到userspace,使得Linuxdriver与Linuxkernel彻底分开。bionic/libc/kernel/并非标准的kernelheaderfiles。Android的kernelheader是利用工具由Linuxkernelheader所产生的,这样做是为了保留常数、数据结构与宏。Android的Linuxkernel控制包括安全(Security),存储器管理(MemoryManagemeat),程序管理(ProcessManagement),网络堆栈(NetworkStack),驱动程序模型(DriverModel)等。下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo是Android用来辅助Git工作的一个工具。
Skia GPU加速能使Android系统的Webkit渲染获得多少收益
GPU加速Webkit渲染有何意义?
从Honeycomb[3.x]版本起,Andorid便支持GPU加速,但目前Android并没有使用Skia GPU进行Webkit渲染。Skia GPU使用OpenGL进行后台加速渲染,未来也许会代替Skia。
很多人觉得,即使Android成功使用了GPU加速Webkit渲染,在访问浏览如雅虎等一般的网站时,用户也感觉不到太大的差异。因为Webkit的资源大多数消耗在了Javascript脚本和布局定位上。
我们觉得Webkit使用GPU加速渲染的最大意义无非是HTML5 Canvas[HTML5的动态绘图效果]。Android渲染Canvas动画实在太慢,导致Web开发者根本无法在Android上用Canvas开发网页游戏[要注意的是,目前很多手机和平板的应用程序以HTML5做为界面,并使用Webkit工作,这也是很多应用在Android系统上感觉“不流畅”的重要因素。译者注]。
Android Webkit开发平台[NDK]使用Skia GPU加速测试
我们对Android系统使用Skia GPU加速的Webkit进行了测试。我们手上已经有Android Webkit NDK的WAC2.0版本,我使用了某个提交版本的Skia源码,并开启Skia GPU加速将其编译进NDK中。
我并没有使用Canvas加速,因为这还要增加修改GraphicsContextSkia API的工作,所以并未测试Canvas渲染的性能。
为了使用Skia GPU加速,我做了以下两点:
1,新增了一个使用GLSurfaceView的eglContext内容。
2,在WebView.cpp中使用SkGpuCanvas代替SkCanvas。 我在系统版本为2.3.2的Nexus S上测试,并禁用了屏幕合成加速和Webkit后备缓存,结果出乎意料,Skia GPU反而降低了绘图性能,比Skia使用CPU渲染的时候慢了两倍以上。
当用户滚动雅虎网站页面的时候,每一帧都会使Webkit对页面元素进行重绘。页面元素包括70%的文本,15%的矩形和15%的图像,Skia GPU“加速”渲染时候反而慢了五倍。
你看到图表后也许会觉得Skia GPU渲染SVG动画时是要比CPU快那么一丁点了。不过Webkit在渲染SVG动画的时候出了一些问题,它绝大多数时间花在了定位布局SVG元素上,而不是渲染SVG元素。所以我不敢确定Skia使用GPU加速时是不是真的变快了。
Skia在栅格化文本的时候使用的是CPU而不是GPU,它将文本缓存为材质贴图。因此Skia GPU加速并不会增加滚动文本时的速度。
我一开始觉得Skia GPU加速会在绘制飞舞的浏览器图标时理应能速度更快了,毕竟那是位图动画,是GPU的强项。结果,Skia GPU渲染慢了10倍……由于还没有得到详细结果,所以我们需要做进一步的研究,以找到问题的原因。
当你构建Skia的时候,你会得到一个跑分程序,运行之后,你会看到使用CPU和GPU渲染时的性能差异。下面是一些测试得分中的重点项目。
你能看到,除了位图绘制,Skia GPU渲染慢了两倍左右。
为什么Skia GPU渲染会更慢?
在我使用gDEBugger[调试工具]和callgrind记录之后,发现了一些问题:
1,glDrawSomething调用得太频繁;
2,gl[图形链接库]状态被调整得过多;
3,转换到FBO[Frame Buffer
Objects]的次数太频繁。
这一切的祸根就是glDrawSomething用得太多,在Webkit调用SkCanvas::drawSomething的时候,每次都是Skia调用glDraw,改变GL状态,并转换为FBO的动作重复。而且即使Skia解决了这三个问题,我也无法确定Skia
GPU在绘制文本动画和小几何图形的时候能比CPU要快。因为实际上GPU在渲染1000个以上数量的小几何图形[小于10像素]的时候难以变得更迅速。而在这之前,Android开发人员就已经极大优化了线性渲染器。在Skia的跑分程序中也看出path_stroke_small_triangle要慢约15倍左右。
Skia GPU加速的前景
你也许会觉得在绘制2D矢量图形的时候,使用GPU是不可能加速的,但请不要太早下结论,我写了一个小程序来测试在使用GPU绘制贝赛尔曲线的时候能比CPU快多少。幸运的是,在Nexus
S上测试的时候,Android的GPU绘制确实比CPU快了点。
相关资料收藏此图相关图片
贝塞尔曲线绘制100个圆测试 -
使用CPU渲染
相关资料收藏此图相关图片
贝塞尔曲线绘制100个圆测试 -
使用GPU渲染
绘制100个大圆的动画,GPU渲染快了1.5倍。
相关资料收藏此图相关图片
贝塞尔曲线绘制1000个圆测试 -
使用CPU渲染
相关资料收藏此图相关图片
贝塞尔曲线绘制1000个圆测试 -
使用GPU渲染
绘制1000个小圆的动画,GPU渲染速度和CPU接近。
Skia
GPU很慢,不过谷歌只花了一年去实现他,我认为谷歌可以像优化线性渲染器那样去优化它。如果是这样的话,我觉得Android用户也许在一两年内就能享受HTML5
Canvas的游戏了[当然,结果是因为现在ARM的处理器性能越来越好,Skia GPU大概也许就这样被遗忘了……译者注]。