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

使用着色器作为绘图填充

 
阅读更多

原文:http://www.pixelbender.cn/?p=68 (原文代码有许多错误,请测试时一一校正)

 

在使用着色器创建绘制填充 时,您将使用绘图 API 方法来创建矢量形状。正如使用绘图 API 可将任何位图图像用作位图填充一样,着色器的输出将用于填充该形状。

 

var canvas:Sprite = new Sprite();
canvas.graphics.beginShaderFill(myShader);
canvas.graphics.drawRect(10, 10, 150, 150);
canvas.graphics.endFill();
// add canvas to the display list to see the result

 

beginShaderFill() 方法注意点

  • 参数 Shader: 无需 指定图像输入
  • 调用 clear () 方法会清除填充
  • 只要绘制 3 个或更多个点 ,或者调用 endFill() 方法时,应用程序就会呈现填充

 

private function onLoadComplete(event:Event):void
{
	shader = new Shader(loader.data);
        // 给着色器参数赋值
	shader.data.point1.value = [topMiddle.x, topMiddle.y];
	shader.data.point2.value = [bottomLeft.x, bottomLeft.y];
	shader.data.point3.value = [bottomRight.x, bottomRight.y];
	this.addEventListener(Event.ENTER_FRAME, updateShaderFill);
}

private function updateShaderFill(event:Event):void
{
	colorAngle += 0.6;
	var c1:Number = 1 / 3 + 2 / 3 * Math.cos(colorAngle);
	var c2:Number = 1 / 3 + 2 / 3 * Math.cos(colorAngle + d120);
	var c3:Number = 1 / 3 + 2 / 3 * Math.cos(colorAngle - d120);
        // 给着色器参数赋值
	shader.data.color1.value = [c1, c2, c3, 1.0];
	shader.data.color2.value = [c3, c1, c2, 1.0];
	shader.data.color3.value = [c2, c3, c1, 1.0];

	canvas.graphics.clear();
        // 开始绘图,三个点即可
	canvas.graphics.beginShaderFill(shader);
	canvas.graphics.moveTo(topMiddle.x, topMiddle.y);
	canvas.graphics.lineTo(bottomLeft.x, bottomLeft.y);
	canvas.graphics.lineTo(bottomRight.x, bottomLeft.y);
	canvas.graphics.endFill();
}
分享到:
评论

相关推荐

    计算机图形学OpenGL、codeblock、边界填充算法

    在使用OpenGL进行图形渲染时,边界填充可以结合顶点着色器和片段着色器来实现。顶点着色器处理几何形状的顶点,而片段着色器则决定每个像素的颜色。通过编程这些着色器,我们可以自定义填充规则。 CodeBlock作为...

    opengl 边缘填充算法

    在OpenGL中,填充通常与绘图命令如`glBegin()`和`glEnd()`配合使用,定义一个形状的边界,然后OpenGL自动进行内部填充。 在OpenGL编程中,我们首先需要设置颜色和模式,比如`glColor3f()`用于设定颜色,`...

    计算机图形学种子填充程序

    `initgraph()`函数用于初始化图形环境,指定驱动器和模式,以便后续绘图操作能够在窗口中进行。`setbkcolor()`则用于设置背景颜色,这里设置为白色(颜色代码14)。 #### 填充算法实现 种子填充的核心在于找到起始...

    C语言绘图与计算机仿真技术

    例如,使用OpenGL可以学习顶点、着色器、纹理映射等技术,从而创建复杂的3D场景。而在SDL或GTK+中,你可以学习如何创建窗口、设置颜色、画线、画圆、填充区域等基本操作。 接下来,我们转向计算机仿真。计算机仿真...

    计算机图形填充

    在计算机软件中,例如图像编辑器或绘图程序,填充功能通常有多种模式。常见的填充方式包括: 1. **单色填充**:选择一种颜色,将整个图形内部填充为该颜色。 2. **渐变填充**:从一种颜色平滑过渡到另一种颜色,常...

    OPENGL扫描线填充算法

    OpenGL库本身并不直接提供扫描线填充的函数,但开发者可以通过OpenGL的绘图命令(如glBegin, glEnd, glVertex等)和自定义的顶点着色器来实现。在VS2017环境下,你可以使用OpenGL的扩展库,如GLUT或GLEW,来辅助开发...

    OpenGL绘图软件源代码

    在标签中提到了"OpenGL",这表明源代码将涉及OpenGL的核心概念,如顶点坐标、着色器、纹理映射、深度测试等。"2D"标签意味着大部分代码将专注于二维空间的渲染,但理解3D概念对2D图形的实现也是有益的,因为许多...

    AndroidOpenGL纹理绘图(详细注释)

    5. **绘制**: 在`onDrawFrame()`方法中,使用`glUseProgram()`启用着色器程序,`glBindTexture()`绑定纹理,`glDrawArrays()`或`glDrawElements()`绘制图形。这将基于之前设置的顶点和纹理信息计算并输出像素。 6. ...

    QT + OPenGL 绘图

    QT与OpenGL结合使用,可以创建出强大的3D图形应用程序。QT是一个流行的开源C++框架,提供了丰富的GUI(图形用户界面)工具,而...在后续的学习中,开发者可能会接触到更复杂的主题,如纹理映射、着色器、变换和动画等。

    Android学习-画图着色

    3. **颜色选择与填充**:应用中通常会包含颜色选择器,让用户可以选择不同的颜色进行着色。这可以通过色彩选择对话框或者色彩滑块实现,然后将选择的颜色保存到全局变量中,供绘图时使用。填充功能则需要判断相邻...

    扫描线填充算法的OpenGL实现

    此外,还可以利用OpenGL的硬件加速功能,如片段着色器,来进一步提高填充速度。 总结来说,基于AEL的扫描线填充算法在OpenGL中的实现涉及到了计算机图形学的基本概念,包括顶点处理、事件处理、数据结构的设计和...

    加枫简易绘图器源代码(SDK)

    加枫简易绘图器是一款基于SDK开发的图形处理软件,主要功能是提供基本的图形绘制能力,包括直线、圆、长方形和圆角矩形。用户可以根据个人需求选择不同的颜色进行绘制,使得这款绘图器在简单易用的同时,具备了一定...

    OpenGL ES 2.0 实现一段时间内数据统计图

    在数据统计图的实现中,顶点着色器可能用于定位图表的坐标,而片段着色器则用于根据数据值填充颜色或绘制条形图。 接着,"shader histogram"标签表明程序可能包含了直方图的绘制。直方图是一种统计图形,通过将数据...

    绘图示例:图案和高级3D效果

    7. **光照和着色**:了解`Program3D`和着色器语言(如GLSL或AGAL),以实现光照效果和自定义表面着色。 8. **事件处理**:如何响应用户的输入,如鼠标点击或键盘按键,以交互式地改变3D场景。 9. **性能优化**:理解...

    OpenTK 绘图程序

    OpenTK作为.NET的OpenGL绑定,为.NET开发者提供了一套完整的API接口,包括顶点数组、纹理映射、着色器编程等。 在描述中提到的"划线"和"画圆"功能,这通常涉及到OpenGL的基本绘图命令,如glBegin()和glEnd()来定义...

    Android Shader着色器/渲染器的用法解析

    Shader是绘图过程中的着色器,它有五个子类: BitmapShader: 位图渲染 LinearGradient: 线性渲染 SweepGradient: 梯度渲染 RadialGradient: 光束渲染 ComposeShader: 组合渲染 渲染模式:Shader.TileMode ...

    OpenGL使用及配置方法完整总结

    5. 使用着色器:现代OpenGL不再使用固定管线,而是采用可编程的着色器模型。你需要编写顶点着色器和片段着色器,用`glCreateShader()`和`glShaderSource()`加载着色器源码,`glCompileShader()`编译着色器,最后用`...

    自定义View绘图

    3. `Shader`:着色器,可以为Paint添加复杂的颜色效果,如渐变、图案填充等。 4. `Matrix`:矩阵对象,用于图形的平移、旋转、缩放和斜切等变换。 四、性能优化 1. 重用Paint对象:避免频繁创建和销毁Paint,这...

    (3)silver light 绘制与着色

    例如,SolidColorBrush用于单色填充,LinearGradientBrush和RadialGradientBrush则允许你创建线性或径向的渐变效果,而ImageBrush可以将图像作为填充内容。 接下来,我们讨论如何使用Silverlight进行绘图。通常,这...

    OpenGL函数与范例解析手册

    在本书中,读者将深入理解OpenGL的函数调用和使用方式,涵盖从基本的绘图操作到复杂的着色器编程。OpenGL的API包含了大量函数,这些函数主要分为几个部分:上下文管理、缓冲区管理、顶点数据处理、渲染模式设置、...

Global site tag (gtag.js) - Google Analytics