`
sjkgxf7191
  • 浏览: 257166 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在独立模式下使用着色器

阅读更多

原文: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> 实例。

 

分享到:
评论

相关推荐

    WebGLTut13:使用每个片段照明和多个着色器程序

    在本文中,我们将深入探讨WebGL的第十三个教程,主题是“使用每个片段照明和多个着色器程序”。WebGL是一种基于OpenGL标准的JavaScript API,用于在网页上实现交互式2D和3D图形渲染。它使得开发者无需依赖任何插件就...

    指定着色模型

    在平滑着色下,不是每个面片独立计算光照,而是基于共享顶点的法线来计算一个平均值,这样相邻面片之间的颜色过渡会更平滑,减少了硬边缘,提高了视觉的真实感。 在OpenGL库中,我们可以使用`glShadeModel`函数来...

    HLSL初级教程HLSL初级教程

    2. **独立的文本文件**:更推荐的方式是将着色器代码保存在独立的文本文件中,然后在应用程序中通过特定的函数加载。 下面是一个简单的HLSL着色器示例: ```hls // BasicHLSL.txt // 全局变量 matrix WVPMatrix; ...

    FollowersOfLight:SFML GLSL着色器实验

    在这里,每个光点都被视为一个独立的像素,通过片段着色器,我们能够控制每个光点的亮度、颜色以及其动态变化。这种自定义的着色器允许我们实现复杂的效果,例如让每个光点不仅发光,还能根据与鼠标距离的变化调整...

    着色petri网CPN监视器monitor帮助文件

    【着色Petri网CPN监视器Monitor帮助文件】提供了关于如何在CPN(Colored Petri Net,彩色Petri网)中有效地使用监视器进行性能分析的详细指南。Petri网是一种图形化的形式化方法,常用于系统建模、并发控制、资源...

    android opengl es 圆锥纹理贴图

    在片段着色器中,使用纹理坐标采样纹理,得到最终的颜色。 5. **圆锥几何体**:圆锥是由一个基底平面和一个顶点构成的几何形状。在OpenGL ES中,我们需要定义圆锥的顶点坐标和法线向量,以及可能的纹理坐标,然后...

    RealToon.zip

    3. **光照处理**:与传统着色器不同,RealToon卡通着色器可以模拟出柔和且夸张的光照效果,如高光和阴影,使得卡通角色在光照下显得更加生动活泼。 4. **自定义贴图**:RealToon支持使用贴图来控制线条样式、颜色...

    GLSL 多重纹理示例(源码)

    GLSL,全称为OpenGL Shading Language,是OpenGL图形库中用于编写着色器的语言,它允许程序员在GPU上执行计算,提升图形渲染的性能和效果。在这个“GLSL多重纹理示例”中,我们将深入探讨如何利用GLSL来实现多纹理...

    OpenGL_ES之GLSL索引绘制“金字塔”并实现纹理颜色混合.zip

    GLSL是OpenGL的编程语言,允许我们编写自定义着色器,对图形的每个像素进行独立处理。 首先,我们要理解索引绘制的概念。在计算机图形学中,索引绘制是一种优化技术,通过使用索引来代替重复的顶点,从而减少数据...

    php设计模式demo

    这种模式在需要频繁创建和销毁对象,或者对象需要全局访问的情况下非常有用。在PHP中,单例模式通常用于数据库连接、缓存管理和配置管理等场景。下面是一个简单的单例模式示例: ```php class Singleton { private...

    Android OpenGL的一个简单的例子.rar

    4. **着色器程序**:OpenGL ES使用着色器语言(GLSL)编写顶点和片段着色器。顶点着色器处理每个顶点的属性,而片段着色器决定每个像素的颜色。在`onSurfaceChanged()`或`onSurfaceCreated()`中,你需要加载并编译...

    metalGuide 翻译.pdf

    Metal的着色器语言与硬件无关,开发者可以在不同的设备上使用相同的着色器代码,这样可以减少应用程序的优化工作量,并且更容易支持多种平台。 5. 实际应用 文档还介绍了如何应用Metal API来编写一个应用程序,包括...

    OpelGL3.3_GetStarted_Texture

    在实际渲染时,我们会在顶点着色器中定义一个纹理坐标变量,并在片段着色器中使用`texture()`函数采样纹理。纹理坐标通常与顶点坐标一起存储在顶点数组中,通过`glVertexAttribPointer()`和` ...

    d3d11 可用的Effects11

    1. **着色器分离**:它允许将着色器逻辑(如顶点着色器、像素着色器)写入独立的文件,然后在运行时动态加载和编译,提高了代码的可读性和可维护性。 2. **状态对象管理**:Effects11通过统一的接口管理Direct3D的...

    HLSL(Shader、GPU编程)初级教程

    1. **着色器模型**:HLSL可以编写各种类型的着色器,如顶点着色器、像素着色器、几何着色器等,它们在图形管线的不同阶段发挥作用,控制物体的形状、颜色和光照效果。 2. **数据类型**:HLSL支持基本的数据类型,如...

    CG---OpenGL.rar_Cg_OpenGL Cg_cg opengl_opengl 三维_opengl 图像

    7. **Cg着色器**:如何创建和使用Cg着色器,包括顶点着色器和片段着色器,实现更复杂的渲染效果。 学习这些源码可以帮助你理解OpenGL和Cg的基本工作原理,为创建自己的图形应用程序打下坚实的基础。你可以逐个研究...

    Android OpenGL实现立方体多纹理图片映射

    在片段着色器中,可以使用`texture2D`函数进行纹理采样,并结合光照计算得到最终的颜色输出。 最后,别忘了开启深度测试,以正确处理重叠的3D物体。通过`glEnable(GL_DEPTH_TEST)`启用深度测试,并使用`glDepthFunc...

    OPENGL ES 3.0编程指南 原书第2版

    1. **顶点着色器**:顶点着色器在GPU上处理模型的几何数据,执行如坐标变换、光照计算等任务,使得每个顶点可以根据场景的需要独立处理。OpenGL ES 3.0中,顶点着色器支持更多的输入输出变量,可以实现更复杂的几何...

    Android opengl 实例源码

    通过深入研究这个实例源码,开发者可以学习如何在Android上创建和控制OpenGL ES上下文,如何编写和使用着色器,以及如何有效地管理和更新图形数据。这对于理解Android游戏开发或者图形密集型应用的实现是非常有价值...

    Android应用源码OpenGL 3D立方体多纹理贴图.zip

    然后在片段着色器中,通过纹理坐标采样器来决定使用哪个纹理。 6. **纹理坐标**: 每个3D模型的顶点不仅有位置信息,还有纹理坐标,用于指定纹理应该如何映射到模型表面。纹理坐标通常是二维的,范围在(0,0)到(1,1)...

Global site tag (gtag.js) - Google Analytics