Yov*_*ovo 3 flash 3d hardware-acceleration flash-player-11
随着闪存播放器11的3D GPU加速,但不是每个视频卡都可以完成这项工作,当不支持的视频卡加速切换到软件时.我可以检查硬件加速是否可用以自定义我的应用程序.
你必须获得一个Context3D来查看它driverInfo:
trace("3d mode: " + context3D.driverInfo);
Run Code Online (Sandbox Code Playgroud)
对我来说,这表明:

最容易测试软件渲染,DirectX或OpenGL将指示硬件加速GPU.
这可以这样实现:
package
{
import flash.display.Sprite;
import flash.display.Stage3D;
import flash.display3D.Context3D;
import flash.display3D.Context3DRenderMode;
import flash.events.Event;
import flash.system.ApplicationDomain;
import flash.system.Capabilities;
public class X extends Sprite
{
public function X()
{
super();
if (ApplicationDomain.currentDomain.hasDefinition("flash.display.Stage3D"))
{
stage.stage3Ds[0].addEventListener(Event.CONTEXT3D_CREATE, onContext3DCreate);
stage.stage3Ds[0].requestContext3D();
}
}
private function onContext3DCreate(event:Event):void
{
// obtain context
var t:Stage3D = event.target as Stage3D;
var context3D:Context3D = t.context3D;
// detect software mode
if ((context3D.driverInfo == Context3DRenderMode.SOFTWARE)
|| (context3D.driverInfo.indexOf('oftware') > -1))
{
trace("Software mode detected!");
}
trace("Flash Version: " + Capabilities.version);
trace("3D mode: " + context3D.driverInfo);
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于GPU加速的StageVideo,您需要StageVideoAvailabilityEvent进行确认StageVideoAvailability.AVAILABLE.
这可以实现为:
package
{
import flash.display.Sprite;
import flash.events.StageVideoAvailabilityEvent;
import flash.media.StageVideoAvailability;
public class X extends Sprite
{
public function X()
{
super();
stage.addEventListener(StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY, onStageVideoState);
}
private function onStageVideoState(event:StageVideoAvailabilityEvent):void
{
if (event.availability == StageVideoAvailability.AVAILABLE)
trace("available");
}
}
}
Run Code Online (Sandbox Code Playgroud)
拥有StageVideo后,渲染状态由表示StageVideoEvent.RENDER_STATE.
var stageVideo = stage.stageVideos[0];
stageVideo.addEventListener(StageVideoEvent.RENDER_STATE, stageVideoStateChange);
function stageVideoStateChange(event:StageVideoEvent):void
{
trace("Render State: " + event.status);
}
Run Code Online (Sandbox Code Playgroud)
渲染状态由StageVideoEvent.status以下内容派生:
VideoStatus.ACCELERATED - 解码和呈现都发生在硬件中.(最棒的表演.)VideoStatus.SOFTWARE - 硬件演示,软件解码.(可接受的表现.)VideoStatus.UNAVAILABLE - 没有可用于处理视频的GPU资源,也没有显示任何内容.回到Video对象.| 归档时间: |
|
| 查看次数: |
1884 次 |
| 最近记录: |