在独立模式下使用着色器

原文:http://www.pixelbender.cn/?p=79

 

在独立模式下使用着色器时,着色器处理的运行 独立于其输出结果 的用途。

指定要执行的着色器 、设置输入值参数值 ,及指定用于放置结果数据对象

在以下两种情形中,可以考虑以独立模式使用着色器:

  • 处理非图像数据:在独立模式下,您可以选择将任意二进制数据数值数据 (而非位图图像数据)传递给着色器。除位图图像数据外,您还可以选择 将着色器结果以二进制数据数值数据形式返回
  • 背景处理:以独立模式运行着色器时,着色器默认为异步 运行。这表示,在您的应用程序继续运行的同时,着色器以后台方式运行 ,并在其处理结束时通知您的代码。您可以使用运行耗时的着色器,它在运行时不会导致应用程序用户界面或其它处理响应迟缓。
// 使用 ShaderJob 对象以独立模式执行着色器
var job:ShaderJob = new ShaderJob(myShader);
// 侦听着色器是否处理完成
job.addEventListener(ShaderEvent.COMPLETE, completeHandler);

// 异步方式执行shader
job.start();
// 同步方式执行shader
// job.start(true);

function completeHandler(event:ShaderEvent):void
{
        // 向 ShaderJob 写入操作结果,也可以直接获取 ShaderEvent 的属性值:ShaderEvent.bitmapData、ShaderEvent.byteArray 和 ShaderEvent.vector
        var jobResult:BitmapData = new BitmapData(100, 75);
        job.target = jobResult;
}

 

如果使用 ShaderJob 执行图像处理 ,则为 target 属性指派一个 BitmapData 实例。

如果要处理二进制数据数值数据 ,则指派ByteArray 对象或 Vector.<Number> 实例给 target 属性。在该情形下,您必须设置 ShaderJob 对象的 width height 属性,以指定输出到 target 对象的数据量 。亦或者如下:

var job:ShaderJob = new ShaderJob(myShader, myTarget, myWidth, myHeight);

其中myTarget 是“在其中写入着色器操作结果 的对象”。此参数必须为 BitmapDataByteArray Vector.<Number> 实例。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值