原文: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
是“在其中写入着色器操作结果
的对象”。此参数必须为 BitmapData
、ByteArray
或 Vector.<Number>
实例。
分享到:
相关推荐
在本文中,我们将深入探讨WebGL的第十三个教程,主题是“使用每个片段照明和多个着色器程序”。WebGL是一种基于OpenGL标准的JavaScript API,用于在网页上实现交互式2D和3D图形渲染。它使得开发者无需依赖任何插件就...
在平滑着色下,不是每个面片独立计算光照,而是基于共享顶点的法线来计算一个平均值,这样相邻面片之间的颜色过渡会更平滑,减少了硬边缘,提高了视觉的真实感。 在OpenGL库中,我们可以使用`glShadeModel`函数来...
2. **独立的文本文件**:更推荐的方式是将着色器代码保存在独立的文本文件中,然后在应用程序中通过特定的函数加载。 下面是一个简单的HLSL着色器示例: ```hls // BasicHLSL.txt // 全局变量 matrix WVPMatrix; ...
在这里,每个光点都被视为一个独立的像素,通过片段着色器,我们能够控制每个光点的亮度、颜色以及其动态变化。这种自定义的着色器允许我们实现复杂的效果,例如让每个光点不仅发光,还能根据与鼠标距离的变化调整...
【着色Petri网CPN监视器Monitor帮助文件】提供了关于如何在CPN(Colored Petri Net,彩色Petri网)中有效地使用监视器进行性能分析的详细指南。Petri网是一种图形化的形式化方法,常用于系统建模、并发控制、资源...
在片段着色器中,使用纹理坐标采样纹理,得到最终的颜色。 5. **圆锥几何体**:圆锥是由一个基底平面和一个顶点构成的几何形状。在OpenGL ES中,我们需要定义圆锥的顶点坐标和法线向量,以及可能的纹理坐标,然后...
3. **光照处理**:与传统着色器不同,RealToon卡通着色器可以模拟出柔和且夸张的光照效果,如高光和阴影,使得卡通角色在光照下显得更加生动活泼。 4. **自定义贴图**:RealToon支持使用贴图来控制线条样式、颜色...
GLSL,全称为OpenGL Shading Language,是OpenGL图形库中用于编写着色器的语言,它允许程序员在GPU上执行计算,提升图形渲染的性能和效果。在这个“GLSL多重纹理示例”中,我们将深入探讨如何利用GLSL来实现多纹理...
GLSL是OpenGL的编程语言,允许我们编写自定义着色器,对图形的每个像素进行独立处理。 首先,我们要理解索引绘制的概念。在计算机图形学中,索引绘制是一种优化技术,通过使用索引来代替重复的顶点,从而减少数据...
这种模式在需要频繁创建和销毁对象,或者对象需要全局访问的情况下非常有用。在PHP中,单例模式通常用于数据库连接、缓存管理和配置管理等场景。下面是一个简单的单例模式示例: ```php class Singleton { private...
4. **着色器程序**:OpenGL ES使用着色器语言(GLSL)编写顶点和片段着色器。顶点着色器处理每个顶点的属性,而片段着色器决定每个像素的颜色。在`onSurfaceChanged()`或`onSurfaceCreated()`中,你需要加载并编译...
Metal的着色器语言与硬件无关,开发者可以在不同的设备上使用相同的着色器代码,这样可以减少应用程序的优化工作量,并且更容易支持多种平台。 5. 实际应用 文档还介绍了如何应用Metal API来编写一个应用程序,包括...
在实际渲染时,我们会在顶点着色器中定义一个纹理坐标变量,并在片段着色器中使用`texture()`函数采样纹理。纹理坐标通常与顶点坐标一起存储在顶点数组中,通过`glVertexAttribPointer()`和` ...
1. **着色器分离**:它允许将着色器逻辑(如顶点着色器、像素着色器)写入独立的文件,然后在运行时动态加载和编译,提高了代码的可读性和可维护性。 2. **状态对象管理**:Effects11通过统一的接口管理Direct3D的...
1. **着色器模型**:HLSL可以编写各种类型的着色器,如顶点着色器、像素着色器、几何着色器等,它们在图形管线的不同阶段发挥作用,控制物体的形状、颜色和光照效果。 2. **数据类型**:HLSL支持基本的数据类型,如...
7. **Cg着色器**:如何创建和使用Cg着色器,包括顶点着色器和片段着色器,实现更复杂的渲染效果。 学习这些源码可以帮助你理解OpenGL和Cg的基本工作原理,为创建自己的图形应用程序打下坚实的基础。你可以逐个研究...
在片段着色器中,可以使用`texture2D`函数进行纹理采样,并结合光照计算得到最终的颜色输出。 最后,别忘了开启深度测试,以正确处理重叠的3D物体。通过`glEnable(GL_DEPTH_TEST)`启用深度测试,并使用`glDepthFunc...
1. **顶点着色器**:顶点着色器在GPU上处理模型的几何数据,执行如坐标变换、光照计算等任务,使得每个顶点可以根据场景的需要独立处理。OpenGL ES 3.0中,顶点着色器支持更多的输入输出变量,可以实现更复杂的几何...
通过深入研究这个实例源码,开发者可以学习如何在Android上创建和控制OpenGL ES上下文,如何编写和使用着色器,以及如何有效地管理和更新图形数据。这对于理解Android游戏开发或者图形密集型应用的实现是非常有价值...
然后在片段着色器中,通过纹理坐标采样器来决定使用哪个纹理。 6. **纹理坐标**: 每个3D模型的顶点不仅有位置信息,还有纹理坐标,用于指定纹理应该如何映射到模型表面。纹理坐标通常是二维的,范围在(0,0)到(1,1)...