gpt4 book ai didi

flash player 11 检查 GPU 加速

转载 作者:行者123 更新时间:2023-12-01 09:34:05 25 4
gpt4 key购买 nike

flash player 11 提供了 3D GPU 加速,但并不是每个显卡都能完成这项工作,当出现不受支持的显卡加速时,就会切换到软件。我可以检查是否可以使用硬件加速来自定义我的应用程序。

最佳答案

你必须获取一个Context3D才能查看它的driverInfo:

trace("3d mode: " + context3D.driverInfo);

对我来说,这表明:

context3d

最容易测试软件渲染的硬件加速 GPU 将由 DirectX 或 OpenGL 指示。

这可以这样实现:

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);
}

}
}

对于 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");
}

}
}

一旦有了 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);
}

渲染状态由StageVideoEvent.status派生,包括:

  • VideoStatus.ACCELERATED - 解码和呈现都发生在硬件中。 (最佳性能。)
  • VideoStatus.SOFTWARE - 硬件演示,软件解码。 (可接受的性能。)
  • VideoStatus.UNAVAILABLE - 没有可用于处理视频的 GPU 资源,并且没有显示任何内容。回退到 Video 对象。

关于flash player 11 检查 GPU 加速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11551539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com