您的位置:首页 > 其它

AS3进行3D设备测试

2013-06-10 15:54 211 查看
package jing.utils.display
{
import flash.display.Stage;
import flash.display.Stage3D;
import flash.display3D.Context3DTextureFormat;
import flash.display3D.textures.Texture;
import flash.events.ErrorEvent;
import flash.events.Event;

import jing.turbo.handle.Handle;
import jing.turbo.handle.HandleDispatcher;

/**
* 3D设备显存测试工具
* @author Jing
*
*/
public class Device3DTest extends HandleDispatcher
{
private var _report:ReportData;

/**
* 测试报告
* @return
*
*/
public function get report():ReportData
{
return _report;
}

private var _stage3D:Stage3D;

public function runTest(stage:Stage):void
{
_report = new ReportData();
_stage3D = stage.stage3Ds[0];
_stage3D.addEventListener(Event.CONTEXT3D_CREATE, _stage3D_context3dCreatedHandler);
_stage3D.addEventListener(ErrorEvent.ERROR, _stage3D_errorHandler);
_stage3D.requestContext3D();
}

private function _stage3D_context3dCreatedHandler(e:Event):void
{
var texture:Texture;
var count:int;

try
{
while (true)
{
texture = _stage3D.context3D.createTexture(512, 512, Context3DTextureFormat.BGRA, false);
count++;
}

}
catch (e:Error)
{

}

_report.maxMemoryCapacity = count << 20;
_report.support3d = true;
end();
}

private function _stage3D_errorHandler(e:ErrorEvent):void
{
end();
}

private function end():void
{
_stage3D.removeEventListener(Event.CONTEXT3D_CREATE, _stage3D_context3dCreatedHandler);
_stage3D.removeEventListener(ErrorEvent.ERROR, _stage3D_errorHandler);
_stage3D.context3D.dispose();
_stage3D = null;
this.sendHandle(new Handle(Handle.COMPLETE));
trace("是否支持3D:", _report.support3d, " 显存容量: ", _report.maxMemoryCapacity >> 20, "MB");
}

}
}

class ReportData
{
/**
* 是否支持3D
*/
public var support3d:Boolean = false;

/**
* 最大显示内存容量
*/
public var maxMemoryCapacity:uint = 0;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐