Tagged: Qt Toggle Comment Threads | 键盘快捷键

  • Roger 7:55 pm on April 24, 2012 固定链接 | 回复
    Tags: Acclerated Compositing, , Qt, Web Page Rendering   

    Web Page Rendering and Accelerated Compositing 

    这是最近在公司做的一次技术分享,介绍了WebKit里面的Accelerated Compositing机制,Accelerated Compositing(图层混合加速)主要用于CSS3动画的加速,由Apple首先引入WebKit并在Safari上实现,而目前,包括Qt,Chrome,Android等其它主要的WebKit Port也都提供了各自的实现。

    讲义内容包括:

    1,网页的基本渲染流程

    2,AC基本概念解释

    3,Qt基于QGraphicsView架构的AC实现介绍

    4,Qt基于TextureMapper架构的AC实现介绍

    5,Android 4.0系统浏览器硬件加速和非硬件加速的AC实现介绍

     
    • unbug 11:41 上午 on 十一月 19, 2012 固定链接 | 回复

      能在国内同仁找到这样的资源不容易啊!谢过!一直想理清composited layer的来龙去脉!

      • Roger 1:07 下午 on 十一月 19, 2012 固定链接 | 回复

        兄台也是在国内做浏览器开发?

        • unbug 5:27 下午 on 十一月 19, 2012 固定链接

          我是前端开发的,在研究webkit页面绘制渲染的过程,期望能对优化页面性能的有所帮助

    • Roger 9:57 上午 on 十一月 20, 2012 固定链接 | 回复

      做前端做到要研究浏览器内核这么有突破性,您也未免太敬业了吧 ^_^

      • unbug 10:59 上午 on 十一月 20, 2012 固定链接 | 回复

        确实非常有帮助,兄台要是方便不如加QQ346742896,有问题能向你请教请教,毕竟你才是专业级的

        • Roger 11:11 上午 on 十一月 20, 2012 固定链接

          我很少上Q了,你加我微信(roger2yi)或者邮件联系吧

    • yisibl 7:25 下午 on 一月 17, 2013 固定链接 | 回复

      不远万里,翻得墙来,只为一睹君颜,膜拜之!

    • Geri 2:22 上午 on 一月 7, 2015 固定链接 | 回复

      Created the greatest aritlces, you have.

  • Roger 11:13 pm on June 8, 2011 固定链接 | 回复
    Tags: Qt, QtWebKit, VS2008,   

    QtWebKit Visual Studio 2008 编译和调试环境建立指南 

    主要参考官方的构建指南:http://trac.webkit.org/wiki/BuildingQtOnWindows,建立QtWebKit在VS2008下面的编译和调试环境,本文提供了对官方构建指南的一些补充和错误纠正。

    工具的准备和编译环境配置

    包括Qt(使用4.7-VS2008的版本),Perl,Python和一些GnuWin32工具集的安装,具体请参考官方构建指南。

    可以修改Qt的qtvars.bat(在Qt安装目录的bin里面),把上述工具加入PATH路径,修改如下(具体目录根据自己的安装目录进行修改)

    set PATH=C:\Perl\bin;C:\GnuWin32\bin;C:\Python27;D:\Qt\4.7.3\bin;%PATH%

    然后运行Qt 4.7.3 Command Prompt进入编译环境。

    代码修正

    当前的Night Build(r88232 07 June 2011)有一个文件在VC下面编译会出错,出错的地方在WebCore/platform/DefaultLocalizationStrategy.cpp第342行, <selection>周围使用了非标准的双引号,去掉或者改成单引号后就可以编译通过。

    编译脚本修改

    按照官方构建指南里面运行build-webkit的方式不能满足我们的需要,并且指南里面生成VC工程的方法有问题,需要自己对编译脚本做一些修改,并且自己手动运行某些步骤。

    运行build-webkit,其实会顺序执行下列步骤:

    1. 创建一个build目录(默认为WebKitBuild,可以通过设定WEBKITOUTPUTDIR环境变量进行修改,按设置,Qt的port会为debug和release版本分别生成debug和release子目录,这种情况会导致后面的VC工程生成出错,需要的修改见下文)
    2. 进入build目录,先生成一些脚本自动产生的代码
    3. 调用qmake,根据.pro文件生成相应的make脚本
    4. 调用nmake,根据make脚本生成库文件

    在webkitdirs.pm脚本里面的函数usesPerConfigurationBuildDirectory定义那些port会分别生成debug和release子目录,我们需要修改让Qt的port不会生成子目录,修改如下:

    sub usesPerConfigurationBuildDirectory
    {
        # [Gtk][Efl] We don't have Release/Debug configurations in straight
        # autotool builds (non build-webkit). In this case and if
        # WEBKITOUTPUTDIR exist, use that as our configuration dir. This will
        # allows us to run run-webkit-tests without using build-webkit.
        #
        # Symbian builds do not have Release/Debug configurations either.
        return ($ENV{"WEBKITOUTPUTDIR"} && (isGtk() || isEfl()))
               || isSymbian() || isAppleWinWebKit() || isQt();
    }

    主要在后面加上isQt()。

    编译和VC工程生成

    在进入WebKit所在的目录下运行:

    perl Tools\Scripts\build-webkit --qt --debug --no-svg

    –debug是生成debug调试版本,如果需要生成release版本可以换成–release,–no-svg是禁用svg支持模块,可以加快编译的速度,更多编译的开关可以查看build-webkit脚本,或者使用参数–help查看帮助,然后根据自己的需要进行选择。

    image

    编译完成1,2,3步,正式开始库编译的时候,就可以终止掉编译过程(crtl+break),生成VC工程后再通过VC工程进行后续的编译。如果按照官方的构建指南加入–qmakearg=”-tp vc”直接运行:

    perl Tools\Scripts\build-webkit --qt --debug --no-svg --qmakearg="-tp vc"

    会出错,原因是因为build-webkit每次都会先清空之前生成的makefiles,可以先临时注释掉这一语句,注释掉build-webkit脚本的431行,然后再运行上面的命令:

    image

    生成VC工程后,即可终止编译。

    打开构建目录下面的WebKit.sln,打开后会得到一个提示说webcore工程加载错误,原因是路径生成有误,直接修改WebKit.sln的第9行的WebCore工程路径即可,然后再加入工具项目DumpRenderTree,ImageDiff,QtTestBrowser,其中QtTestBrowser是一个很简单的浏览器,通过它去跟踪WebKit内部的处理流程和了解内部结构会非常有帮助。设置好项目的依赖关系(QtTestBrowser->QtWebKit->webcore->jscore),就可以开始编译QtTestBrowser了,漫长的编译过程后得到的最后的结果(如果内存足够,可以考虑使用RamDisk和启用更多并行编译设置来加快编译速度):

    image 

    更多

    Chrome的编译:https://rogeryi.wordpress.com/2011/03/29/chrome-webkit-build-on-windows/

    WebKit资源收集 https://rogeryi.wordpress.com/2011/03/28/webkit-resources/

     
    • 匿名 7:52 下午 on 六月 17, 2011 固定链接 | 回复

      谢谢楼主的分享。不过我确很不幸,用命令行编译没问题,但是用vs2008 却出一堆莫名其妙的问题。

      而且如果用命令
      D:\WorkInSVN\Webkit>perl Tools\Scripts\build-webkit –qt –v8 –debug –no-svg –
      -qmakearg=”-tp vc”会出

      Project ERROR: To build QtWebKit+V8 you need qtscript-staging’s v8 branch. (See:
      http://qt.gitorious.org/+qt-developers/qt/qtscript-staging)
      Failed to setup build environment using qmake!

      的错误。

      • Roger 12:21 下午 on 六月 23, 2011 固定链接 | 回复

        因为我没用V8引擎的选项,所有没有碰见这样的状况…

  • Roger 10:50 am on May 12, 2011 固定链接 | 回复
    Tags: , Qt, Qt5   

    Lars Knoll 对Qt5的展望 

    Lars Knoll, KHTML(WebKit引擎的前身)的创建者,目前在Nokia从事Qt的开发。他对Qt,一个极其成功的C++跨平台应用程序/GUI框架,的下一个版本Qt5描绘了自己期望的愿景。从这篇文章中我们可以看到GUI框架未来的演化方向,和以后可能的交互式应用的主流开发方式。

    Objectives with next major version of Qt (Qt 5)

    • Make better use of the GPU, allowing you to create smooth (and accelerated) graphics performance even with limited resources;
    • Making your creation of advanced applications and UIs easier and faster (with QML and Javascript);
    • Make apps connected to the web be as powerful as possible, i.e. to embed and power up web content and services into any Qt app; and
    • Reduce the complexity and amount of code required to maintain and implement a port.

    Qt下一个主要版本(Qt5)的主要目标

    • 更好地利用GPU(2D/3D加速),使得我们即使在有限资源的情况下(移动设备)也可以获得流畅(被加速的)绘图性能。
    • 创建更高级的应用和UIs变得更快更容易(基于QML和Javascript)
    • 应用与Web的互联互通将会变得非常的强悍,也就是可以在Qt应用中嵌入web内容和应用与web之间可以互动
    • 降低移植到不同平台的复杂度和需要的代码量

    从上面可以看出,得益于更普遍和更快的2D/3D硬件加速的能力,和更快的Javascript引擎,我们可以用更快速的方式开发更高级的交互式应用,并且天然具备web整合和跨平台的能力。我们可以使用QML描述界面,用Javascript处理事件交互,少量需要高性能的后端组件(backend component)可以使用C++编写(像已经整合的QtWebKit组件),C++编写的组件和QML/Javascript的解释环境可以无缝地衔接在一起。

    原文:http://labs.qt.nokia.com/2011/05/09/thoughts-about-qt-5/

    对原文的进一步解释,澄清误解:http://labs.qt.nokia.com/2011/05/11/responses-to-qt-5/

     
c
Compose new post
j
Next post/Next comment
k
Previous post/Previous comment
r
回复
e
编辑
o
Show/Hide comments
t
返回顶部
l
Go to login
h
Show/Hide help
shift + esc
取消