FAST UI Draw是一个提供更高性能画布界面的库

2020-11-13 15:13:17

FAST UI Draw是一个提供更高性能画布界面的库。它的设计使得它总是使用GPU进行绘制。

与画布绘制许多常见实现方式不同,Fast UI Drawhas在裁剪中的更改非常便宜,且针对GPU进行了优化。此外,使用GL后端的Fast UI Drawhas只有很少的流水线状态。实际上,使用Fast UI Draw的应用程序的API跟踪每帧只会看到少量的绘制调用,即使在画布状态垃圾和剪辑状态更改很高的情况下也是如此。事实上,对于GL后端,只有一个Canvas状态更改会调用管道状态更改:更改混合模式。

此外,快速用户界面绘制使应用程序能够为自定义绘制制作自己的行着色器。

总账后端需要总账3.3版。要支持除Porter-Duff混合模式之外的混合模式,需要GL_EXT_SHADER_FRAME BUFFER_FETCH或GL_ARB_SHADER_IMAGE_LOAD_STORE,并且GL_INTELL_FRAPTION_SHADER_ORDER_ORDLING、GL_ARB_Fragment_Shader_Interlock或GL_NV_Fragment_Shader_Interlock之一。

GLES后端需要GLES 3.0版。如果GLES版本为3.0或3.1,强烈建议使用扩展名GL_OES_纹理_缓冲区或GL_EXT_纹理_缓冲区之一。对于GLES 3.0、3.1和3.2,强烈建议使用GL_APPLE_CLIP_DISTANCE或GL_EXT_CLIP_CALL_DISTANCE。要支持波特-达夫混合模式以外的混合模式,需要GL_EXT_SHADER_Frame Buffer_FETCH或GLES 3.1 With GL_NV_Fragment_Shader_Interlock。虽然Porter-Duff合成模式不需要任何扩展,但扩展GL_EXT_BRAND_FUNC_EXTENDED将提高性能。

英特尔GPU从ivybridge开始,在GL和GLES的所有混合模式下,为最新版本的MESA提供了对优化性能的扩展支持。对于MS-Windows,用于英特尔GPU的英特尔驱动程序也支持在所有混合模式下实现最佳性能。

最新的GL(和GLES)标头通过设置环境变量GL_INCLUDEPATH来设置这些标头的预期位置;如果没有设置该值,构建系统将猜测一个值。标题文件的名称由环境变量GL_RAW_HEADER_FILES(GL)和GLES_RAW_HEADER_FILES(GLES)控制。如果未设置值,则使用合理的缺省值。

创建目标以查看所有构建目标以及控制构建内容和构建方式的环境变量列表。在MS-Windows上,帮助库NEGL不是默认构建的,而是在其他平台上构建的。

MacOS构建是可能的,但不能使用MacOS中包含的GL标头进行构建。相反,将所需的Khronos头文件复制到/usr/local/Include,同时保留树的完整性,即将gl/glcorearb.h从Khronos注册表复制到/usr/local/include/gl/glcorearb.h,并将khr/khrplatform.h复制到/usr/local/include/khr/khrplatform.h。然后,构建过程就会正常进行(构建系统默认将GL_INCLUDEPATH复制到/usr/local。是的,这是一次黑客攻击。

演示(自然)链接到FastUIDraw库,因此它们需要位于库路径中。对于Unix平台,这是通过将库所在的路径附加到LD_LIBRARY_PATH来完成的。一个简单的快速技巧是导出LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH。所有演示都有一些选项,可以通过将--Help作为一个也是唯一的命令行选项传递给演示来查看。

执行";make Install_Location=/Path/to/Install/来安装";会将fast uidraw安装到指定的路径。没有安装演示!INSTALL_LOCATION的缺省值是/usr/local,可以根据需要进行更改。位置如下:

安装后,可以使用脚本fast uidraw-config并将其复制到INSTALL_LOCATION/bin。使用该脚本获取链接器和编译标志,以构建应用程序。或者,也可以使用pkg-config。

FastUIDraw是libFastUIDraw中的主要部分,发布和调试版本有两个变量,pkg-config模块名分别为fast uidraw-ease和fast uidraw-debug。

FastUIDraw的GL后台是libFastUIDrawGL,发布和调试版本有两个变体,pkg-config模块名称分别为fast uidrawGL-Release和fast uidrawGL-DEBUG。

FastUIDraw的GLES后台是libFastUIDrawGLES,有两个变量发布和调试版本,它们的pkg-config模块名分别是fast uidrawGLES-Release和fast uidrawGLES-DEBUG。

库的调试版本和发布版本不应混用;如果您是为发布而构建的,则使用发布版本和发布标志。如果您是为调试而构建的,请使用调试库和调试标志。用户可以通过使用pkg-config或脚本fast uidraw-config来获取标志值。