About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Jan

    16

    许多中低端安卓设备的性能普遍比较低,在安卓配置的节点中加入 colorDepth 参数,强制 16 位颜色,可以提供应用的性能(会牺牲颜色保真度,颜色过渡可能会不自然),尤其是在使用 Stage2D 原生显示对象开发时它会特别有用。

    <android>
        <colorDepth>16bit</colorDepth>
        <manifestAdditions><![CDATA[
            <manifest android:installLocation="auto">
                <!--删除 android.permission.INTERNET 权限将导致无法调试设备上的应用程序-->
                <uses-permission android:name="android.permission.INTERNET"/>
                <!--其它的已省略-->
            </manifest>
        ]]></manifestAdditions>
    </android>

    特别注意的是,当应用中包含视频并使用了 StageVideo 时,就必须使用 32 位,否则就会无法播放。

    Jan

    7

    在《Introducing Starling》一书中在介绍 Flash Player 中的显示层次结构时,我们会看到 StageVideo 处于 Stage3D 和 传统的 Display List 层之下,但书中也非常明确的写明了 StageVideo 显示的内容总是会重叠在 Stage3D 层的内容上面。初一看,也许会觉的这个是原作者写错了,或写反了;连《Introducing Starling》中文译版(《Starling 框架帮助手册中文版》)的作者 S_eVent ,也在翻译的中文版里注明了这一点让他感到困惑。

    其实要解释这个问题很简单,StageVideo 层中的内容是会被单独渲染成一个独立的 StageVideo 对象,但这个对象并不是直接显示的,而是通过 GPU 在渲染的步骤中被合成进去的,所以它总是会在 Stage3D 层上面。

    智能电视机、数字机顶盒,以及其它移动设备,虽然没有像台机那样强大的 CPU,但它们却有非常强大的视频解码功能,只需要少量的 CPU 使用率就可以渲染高品质视频(前提是视频编码的支持,比如 H.264视频编解码器,能使视频从解码开始到渲染,都能充份利用 GPU 加速)。为了确保 StageVideo 可用,须设置 wmode 属性为 direct 模式, 这种模式在 Windows 上会使用 Direct3D;在 Mac OS 和 Linux 系统中使用 OpenGL,这样就可以通过GPU进行视频帧的合成处理。

    当然,GPU 加速同样适用于桌面设备上,所以一些视频网站同样利用 StageVideo 开发桌面 WEB 版的视频播放器,但这其实会产生一个问题:利用 GPU 硬件加速的时候会造成显卡的温度过高,而普通的笔记本用户大多只有一个 CPU 的风扇,所以看起来 CPU 使用率很低的情况下,笔记本用户仍然会因为显卡温度过高而自动关机。而开发公司的开发者们往往使用的散热良好的台机(台机显卡大多会有独立的风扇),一般情况下他们不容易发现这个问题。

    注:如果需要 《Starling 框架帮助手册中文版》,可以加入 QQ 群:15965780,群共享内有下载。

    More...