安卓做视频网站,备案ip 查询网站查询网站查询系统,怎么才服务器上做网站,wordpress 注册中文名ANGLE介绍
ANGLE,把OpenGLES2或3调用转换为DirectX9,11或OpenGL调用.这些说明记录了如何在Windows或Linux上使用ANGLE而不是本地OpenGL后端.
细节
gclient sync下载ANGLE的源码及Skia的其他仅测试依赖项. 要针对ANGLE构建Skia测试工具,请添加skia_use_angletrue到args.gn文件…ANGLE介绍
ANGLE,把OpenGLES2或3调用转换为DirectX9,11或OpenGL调用.这些说明记录了如何在Windows或Linux上使用ANGLE而不是本地OpenGL后端.
细节
gclient sync下载ANGLE的源码及Skia的其他仅测试依赖项. 要针对ANGLE构建Skia测试工具,请添加skia_use_angletrue到args.gn文件中(或运行gn args来编辑). 运行工具时,请使用--config angle_backend_frontend,如
out/Debug/dm --src gm --config angle_d3d11_es2
out/Release/nanobench --config angle_gl_es2Vulkan
Skia的GPU后端有一个Vulkan实现.可与OpenGL后端一起构建Vulkan后端.客户可在运行时在OpenGL和Vulkan实现间选择.
Vulkan后端已达到与OpenGL后端的功能等价.目前,许多Vulkan驱动都存在没有解决方法的触发Skia的错误. 会在发现错误时向供应商报告错误.
Windows和Linux
要构建Vulkan后端,请在args.gn中设置skia_use_vulkantrue.
Android
可在装有Vulkan驱动的设备上运行包括所有AndroidN设备的Vulkan后端.要构建Vulkan后端,请在args.gn中设置ndk_api24来指定AndroidN目标.
Mac
可用SwiftShader在软件仿真中运行Vulkan后端.这允许通过dm测试和调试,在查看器等交互式应用中不支持Vulkan.
Skia已按外部依赖项包含SwiftShader库.要构建它,先要安装CMake. 准备好CMake后,需要编译SwiftShader.请按以下步骤操作,替换你的实际Skia目录,而不是下面的$(SKIA_DIR): $ cd $(SKIA_DIR)/third_party/externals/swiftshader/build$ cmake ..$ cmake --build . --parallel
构建完成后,SwiftShader的构建目录,应包含包含libvk_swiftshader.dylib的Darwin子目录.为了让Skia看到该库,需要在args.gn中如下引用它:
skia_use_vulkan true
extra_cflags [ -D, SK_GPU_TOOLS_VK_LIBRARY_NAME$(SKIA_DIR)/third_party/externals/swiftshader/build/Darwin/libvk_swiftshader.dylib ]使用Vulkan后端
要创建由Vulkan支持的GrContext,客户会创建一个Vulkan设备和队列,初化GrVkBackendContext来描述环境,然后调用GrContext::MakeVulkan: sk_spGrVkBackendContext vkContext new GrVkBackendContext;vkBackendContext.fInstance vkInstance;vkBackendContext.fPhysicalDevice vkPhysDevice;...vkBackendContext.fInterface.reset(GrVkCreateInterface(instance, vkPhysDevice, extensionFlags);...sk_spGrContext context GrContext::MakeVulkan(vkBackendContext);
使用Vulkan后端时,用GrVkImageInfo来构造,创建引用Skia客户创建的VkImages的SkSurface和SkImage对象的GrBackendTexture和GrBackendRenderTarget对象.
应按GrVkImageInfo*解释SkImage::getTextureHandle(),SkSurface::getTextureHandle()和SkSurface::getRenderTargetHandle()返回的GrBackendObject.这允许客户取SkImage或SkSurface的支持VkImage. GrVkImageInfo指定VkImage和关联的状态(平铺,布局,格式等).通过getTextureHandle()或getRenderTargetHandle()取GrVkImageInfo*后,客户应检查fImageLayout字段,以了解Skia在使用VkImage之前,将VkImage保留在哪个布局中.
如果客户更改了VkImage的布局,则应在恢复Skia渲染前,调用GrVkImageInfo::updateImageLayout(VkImageLayoutlayout).
在Skia对通过GrVkImageInfo导入Skia的VkImage执行I/O之前,客户负责期望的同步或阻塞.Skia假定无需额外同步,就可开始发出引用VkImage的命令.
提示
在Chromium中网页上抓.skp文件
使用experimental/tools/web_to_skp脚本,或会如下: 1,使用--no-sandbox --enable-gpu-benchmarking启动Chrome或Chromium. 2,打开JS控制台(CtrlShiftJ(Windows/Linux)或CmdOptJ(MacOS)) 3.执行:chrome.gpuBenchmarking.printToSkPicture(/tmp),会在成功时返回undefined.
在Skia调试器中打开生成文件,用dm栅格化它,或使用Skia查看器查看: out/Release/dm --src skp --skps /tmp/layer_0.skp -w /tmp \--config 8888 gpu pdf --verbosels -l /tmp/(*)/skp/layer_0.skp.*out/Release/viewer --skps /tmp --slide layer_0.skp
在Chromium中的网页上抓.mskp文件
多页Skia图片文件抓捕为生成PDF和打印文档而发送的命令. 使用experimental/tools/web_to_mskp脚本,或会如下: 前2同上,第3步执行 chrome.gpuBenchmarking.printPagesToSkPictures(/tmp/filename.mskp) 在Skia调试器中打开生成文件,用dm栅格化它,或使用Skia查看器查看: experimental/tools/mskp_parser.py /tmp/filename.mskp /tmp/filename.mskp.skpls -l /tmp/filename.mskp.skp# open filename.mskp.skp in the debugger.out/Release/dm --src mskp --mskps /tmp/filename.mskp -w /tmp \--config pdf --verbosels -l /tmp/pdf/mskp/filename.mskp.pdf
如何在Skia中添加硬件加速
Skia可通过两个方式利用指定硬件. 1,自定义瓶颈例程
Skia的blit中有一组瓶颈例程,可在平台上替换这些例程,以利用指定的CPU功能.一个此例是ARMv7设备上的NEONSIMD指令.见src/opts/这里
Skia是否支持字体提示
Skia有个内置字体缓存,但它不知道如何把实际TrueType等字体文件渲染到其缓存中.为此,它依赖平台来提供SkScalerContext的实例.
这是Skia与字体缩放器引擎通信的抽象接口.在src/ports中,可见FreeType,macOS和WindowsGDI字体引擎的支持文件. 其他字体引擎也可轻松类似支持.
Skia是否调整字距
变形是用适当字体转换Unicode文本跨度为固定字形跨度的过程.
Skia不改变文本.Skia提供了来绘画字形的接口,但不实现文本变形器.Skia的客户经常使用HarfBuzz来生成包括调整字距的字形及其位置.
这里是如何结合使用Skia和HarfBuzz的示例.此例中,使用相同的mmap()的.ttf字体文件创建SkTypeface和hb_face_t. 用HarfBuzz面来变形Unicode文本为一系列字形和位置,然后可用SkTypeface绘画这些字形.
如何在文本上添加阴影
混合模式
描述如何替换目标像素为自身像素和源像素的组合.Blend_Mode可用源和/或目标.Blend_Mode可独立地操作每个Color组件,也可允许所有源像素组件为一个目标像素组件.
Blend_Mode不使用相邻像素来确定结果.
Blend_Mode使用源及读取目标α来确定写入的目标α;源和目标α也可能影响写入的目标Color组件. 在源像素和目标像素中,无论是如何编码的α,几乎所有Color_Types都将其视为从0到1的区间.而且,几乎所有Blend_Mode算法都限制了输出,因此所有结果也是零到一.
两个例外是SkBlendMode::kPlus和kRGBA_F16_SkColorType. SkBlendMode::kPlus允许计算大于1的α和Color分量值.对除kRGBA_F16_SkColorType以外的Color_Types,生成的α和分量值被限制为1. kRGBA_F16_SkColorType允许值超出0到1的区间.由客户决定确保结果在0到1的区间内,因此良好定义.
组合数字图像通过SkBlendMode::kXor,描述了Porter_Duff模式的SkBlendMode::kClear. 使用Porter_Duff合成,绘画带透明度的位图可自由清理目标. 用Porter_Duff合成,绘画有透明度的几何图形不会组合透明源像素,从而保持几何体外部的目标位置不变.
SkBlendMode::kPlus和SkBlendMode::kScreen模式使用简单算术来使目标变亮或变暗.:SkBlendMode::kOverlay到SkBlendMode::kMultiply模式,使用更复杂的算法来变亮或变暗;
有时如混合模式,会同时执行这两个操作.
SkBlendMode::kModulate是SkBlendMode::kSrcATop和SkBlendMode::kMultiply的混搭.它乘以包括α的所有组件; 与SkBlendMode::kMultiply不同,如果源或目标为透明,则结果为透明.SkBlendMode::kModulate使用预乘值来计算乘积; SkBlendMode::kMultiply使用非预乘值值来计算乘积.
SkBlendMode::kHue,SkBlendMode::kSaturation,SkBlendMode::kColor和SkBlendMode::kLuminosity模式用所有分量颜色信息,用不可分离混合模式,转换源和目标像素.