东风夜放花千树 专栏文章 查看内容

asphyre pxl canvas 函数介绍

2019-8-25 10:35| 发布者: finer| 查看: 10011| 评论: 0

摘要: asphyre pxl是一个可用于 delphi和freePascal的跨平台2d 3D引擎,但介绍资料很少。其中的canvas是画布,这上面的图形会渲染到屏幕上。 canvas有很多实用的函数,简介如下 ...
asphyre pxl是一个可用于 delphi和freePascal的跨平台2d 3D引擎,但介绍资料很少。其中的canvas是画布,这上面的图形会渲染到屏幕上。
canvas有很多实用的函数,简介如下
function Initialize: Boolean; 初始化画布以便用于渲染。请注意,要进行实际渲染,
@假设初始化成功,则需要首先调用link(beginscene)。此结果为@true时
成功,否则为@false。

function BeginScene: Boolean; 准备画布以开始渲染。此方法成功后,可以进行任何呈现调用。
成功时返回@true,否则返回@false。

procedure EndScene; 完成画布中的渲染阶段。

procedure PutPixel 在目标曲面上绘制具有指定位置和颜色(阿尔法混合)的单个像素。
此方法被视为基本功能,应始终由派生类实现

procedure Line 在两个指定位置之间绘制线条,并用颜色渐变填充。
此方法被视为基本功能,应始终由派生类实现。

procedure LineArray 使用纯色在指定顶点之间绘制一系列线条。

procedure WuLine 在用单色填充的指定位置之间使用@link(putpoixel)原语绘制抗锯齿“wu line”。

procedure Ellipse 用给定的原点、半径和颜色绘制椭圆。

procedure Circle 用给定的原点、半径和颜色绘制圆。

procedure WireQuad 在指定顶点(使其成为线框四边形)和顶点颜色之间绘制线。注意
这不一定符合最后一个像素呈现规则)。

procedure WireHexagon 在六角体中的每个顶点之间绘制线。顶点与中心相距0.5像素(因此直径
是1)在所有方向上,乘以给定的矩阵,并在
相应的顶点。六边形的尺寸、位置和旋转可以通过以下一种或多种方式给出:
几个3x3矩阵相乘在一起。

procedure DrawIndexedTriangles 绘制一个或多个用颜色渐变填充的三角形,由顶点、颜色和索引缓冲区指定。
此方法被视为基本功能,应始终由派生类实现。

procedure FillTri  绘制由给定位置和颜色指定的颜色渐变填充的三角形。

procedure FillQuad 使用由给定顶点和颜色指定的颜色渐变绘制四边形。

procedure FillRect 使用给定的边距和颜色指定的颜色渐变绘制矩形

procedure FrameRect 绘制由给定顶点和颜色指定的线条宽度为一个像素的矩形。尽管这可能会
对于矩形以外的形状(例如四边形)的坐标,结果可能是不可预测的。
与其他线条绘制方法不同,此方法使用填充形状,并假定四个顶点对齐
形成矩形。生成的结果符合最后一个像素规则,可用于绘制UI元素(而
像@link(wirequad)这样的方法可能会根据实现产生大小不正确的矩形。

procedure HorizLine 用指定的坐标和颜色渐变绘制水平线。此方法使用填充形状而不是
实际行用于生成准确的结果,并用于呈现UI元素。

procedure VertLine 用指定的坐标和颜色渐变绘制垂直线。此方法使用填充形状而不是
实际行用于生成准确的结果,并用于呈现UI元素。

procedure FillHexagon 绘制六角体,其中顶点与中心相距0.5像素(因此直径为1),在所有方向上,
乘以给定的矩阵,并在相应的顶点处填充六种颜色的渐变。尺寸,
六角形的位置和旋转可以用一个或多个3x3矩阵的组合乘以
一起。

procedure FillArc 在给定位置和半径处绘制填充弧。弧以@code(initangle)开始,以
@code(endangle)(以弧度表示),细分为@code(steps)中指定的三角形数。弧的形状是
填充了四种颜色的渐变。

procedure FillEllipse 在给定位置和半径处绘制实心椭圆。椭圆被细分为若干三角形。
在@code(步骤)中指定。椭圆的形状由四种颜色的渐变填充。

procedure FillCircle 在给定位置和半径处绘制实心圆。圆被细分为若干三角形。
在@code(步骤)中指定。圆的形状由四种颜色的渐变填充。

procedure FillRibbon 在给定的内半径和外半径之间的位置绘制填充色带。功能区开始于
@代码(initangle)并以@code(endangle)结尾(以弧度表示),细分为在
@代码(步骤)。丝带的形状填充了四种颜色的渐变。

procedure QuadHole 在给定的位置和大小绘制一个填充矩形,其中给定的位置和大小有一个孔(椭圆形式)
中心和半径。孔的质量由@code(steps)的值(以细分数表示)定义。
整个形状由矩形边缘的外部颜色和内部颜色开始填充渐变。
在孔的边缘结束。此形状对于突出显示屏幕上的项目特别有用
使整个区域变暗,除了孔内的区域。

procedure DrawTexturedTriangles 绘制一个或多个由顶点、纹理坐标和颜色渐变填充的三角形,
颜色和索引缓冲区。

procedure UseTexture 定义下一次调用@link(texquad)时要使用的指定纹理。纹理内部的坐标是
在[0..1]范围内的逻辑单元中定义

procedure UseTexturePx 定义下一次调用@link(texquad)时要使用的指定纹理。纹理内部的坐标是
使用浮点坐标以像素定义。

procedure UseImage 定义下一次调用@link(texquad)时要使用的指定图像。如果图像有多个纹理,则
将使用第一个。

procedure UseImage(const Image: TCustomCanvasImage; const Mapping: TQuad;
      const TextureIndex: Integer = 0); 定义指定的图像及其纹理之一,以便在下次调用@link(texquad)时使用。坐标系
纹理内部以[0..1]范围内的逻辑单位定义。

procedure UseImagePx 定义指定的图像及其纹理之一,以便在下次调用@link(texquad)时使用。坐标系
纹理内部使用浮点坐标以像素定义。

procedure UseImageRegion 定义要在下次调用@link(texquad)时使用的图像的指定区域。只有一部分
该区域用于呈现由给定坐标定义的;这些坐标也可以镜像
如果需要,水平和/或垂直翻转。如果图像没有或只有一个图案,则
@代码(区域)应设置为零;在这种情况下,将使用整个纹理。

procedure TexQuad 在给定顶点绘制纹理矩形并乘以指定的四种颜色渐变。质地必须
在此调用之前,通过@code(usetexture[…])或@code(useimage[…])调用之一进行设置。每一个调用
@code(texquad)必须有前面的@code(usetexture[…])或@code(useimage[…])调用才能指定图像
或纹理。在应用之前,渲染纹理的所有像素都将乘以渐变颜色。
阿尔法混合。如果纹理不存在alpha通道,则将使用渐变的alpha值。

procedure Flush 刷新画布缓存并在目标图面上显示挂起的基元。这对
在开始渲染(例如,3D场景)之前,请确保画布缓存中没有保留任何内容。

procedure Reset; 重置画布操作所需的所有状态。当自定义状态更改
制作(例如,在3D场景中)以便将画布恢复到其工作状态,该方法应调用

function SetPalette 设置用于呈现8位索引图像的调色板。对这类图像的支持取决于
供应商和平台。成功时返回@true,否则返回@false。

procedure ResetPalette; 重置调色板以用于呈现以前由@link(setpalete)设置的8位索引图像。

function SetEffect 设置用于渲染的自定义明暗器效果。此功能可能依赖于提供程序和平台。
此外,要使其工作,@italic(tcanvasattribute.customffect)应设置在@link(attributes)中。

property Parent: 提供对画布父级的访问(如果有)。

property CacheStall: Integer read FCacheStall; 上次呈现帧期间重设呈现缓存的次数。每次缓存重置通常是
耗时的操作如此之多的此类事件可能会损害应用程序的呈现
性能。如果这个参数在渲染场景中非常高,则渲染代码应该
为了更好地对图像、形状和混合类型进行分组而进行修改。

property ClipRect: TIntRect 将在其中进行渲染的剪切矩形。这对于将渲染限制为
表面的某一部分。

property Attributes: TCanvasAttributes 定义影响渲染行为的一个或多个画布属性。

路过

雷人

握手

鲜花

鸡蛋

最新评论

东风夜放花千树  浙ICP备19024182号-2   浙公网安备 33078202001030号

GMT+8, 2024-12-21 19:36 , Processed in 0.030094 second(s), 15 queries .

Powered X3.4

© 2001-2017

返回顶部