目录
- 图形。
- 基础要点
- GL 重载机制
ApplyContextMatrixBezierBindTextureBorderImageBoxShadowCallbackCanvasCanvasBaseChangeStateClearBuffersClearColorColorContextInstructionEllipseFboGraphicExceptionInstructionInstructionGroupLineLoadIdentityMatrixInstructionMeshPointPopMatrixPopStatePushMatrixPushStateQuadRectangleRenderContextRotateScaleSmoothEllipseSmoothLineSmoothQuadSmoothRectangleSmoothRoundedRectangleSmoothTriangleStencilPopStencilPushStencilUnUseStencilUseTranslateTriangleUpdateNormalMatrixVertexInstructiongl_init_resources()
图形。¶
该包汇集了许多用于绘制的底层函数。整个图形包兼容OpenGL ES 2.0,并包含多种渲染优化。
基础要点¶
要在屏幕上进行绘制,你需要:
一个
Canvas对象。
Instruction对象。
Kivy 中的每个 Widget 默认已经拥有一个 Canvas。当你创建一个控件时,你可以创建所有绘制所需的指令。如果 self 是当前控件,你可以这样做:
from kivy.graphics import *
with self.canvas:
# Add a red color
Color(1., 0, 0)
# Add a rectangle
Rectangle(pos=(10, 10), size=(500, 500))
GL 重载机制¶
在 1.2.0 版本加入.
在应用程序的生命周期内,OpenGL上下文可能会丢失。这种情况发生在:
当在OS X或Windows平台上调整窗口大小,并且使用pygame作为窗口提供程序时,会出现此问题。这是因为SDL 1.2的设计所致。在SDL 1.2中,每次调整窗口大小时都需要重新创建GL上下文。这个问题在SDL 1.3中已得到修复,但pygame默认尚未支持该版本。
当Android释放应用资源时:当您的应用进入后台,Android可能会回收您的OpenGL上下文,以便将资源分配给其他应用。当用户切换回您的应用时,系统会为您的应用提供一个新创建的GL上下文。
从1.2.0版本开始,我们引入了一种机制,用于重新加载所有使用GPU的图形资源:Canvas、FBO、Shader、Texture、VBO和VertexBatch。
VBO和VertexBatch由我们的图形指令构建。在重新加载时,我们拥有重建所需的所有数据。
Shader:与VBO相同,我们存储着色器中使用的源代码和值,以便能够重新创建顶点/片段/程序。
纹理:如果纹理有来源(图像文件或图集),则从来源重新加载图像并重新上传至GPU。
您应自行处理这些情况:
- class kivy.graphics.ApplyContextMatrix(**kwargs)¶
-
target_stack 由位于 source_stack 顶部的矩阵组成。
在 1.6.0 版本加入.
- source_stack¶
用作来源的矩阵栈名称。可以是'modelview_mat'、'projection_mat'或'frag_modelview_mat'。
在 1.6.0 版本加入.
- target_stack¶
用作目标的矩阵栈名称。可以是'modelview_mat'、'projection_mat'或'frag_modelview_mat'。
在 1.6.0 版本加入.
- class kivy.graphics.Bezier(**kwargs)¶
-
在 1.0.8 版本加入.
- 参数:
- points:列表
格式为(x1, y1, x2, y2...)的点列表。
- segments:整数,默认值为180
定义绘制曲线所需的线段数量。线段越多,绘制出的曲线就越平滑。
- loop:布尔值,默认为 False
将贝塞尔曲线设置为连接最后一个点与第一个点。
- dash_length:整数
线段长度(若为虚线),默认为1。
- dash_offset:整数
段与段之间的间距,默认为0。调整此值可实现虚线效果。
- dash_length¶
用于获取/设置曲线中虚线长度的属性。
- dash_offset¶
用于获取/设置曲线中虚线之间偏移量的属性。
- points¶
用于获取/设置三角形点的属性。
警告
这将始终根据新的点列表重建整个图形,可能会非常消耗CPU资源。
- segments¶
用于获取/设置曲线段数的属性。
- class kivy.graphics.BindTexture(**kwargs)¶
-
BindTexture 指令将绑定一个纹理,并为后续绘制启用 GL_TEXTURE_2D。
- 参数:
- texture:纹理
指定要绑定到给定索引的纹理。
- source¶
设置/获取用于加载纹理的源(文件名)。
- class kivy.graphics.BorderImage(**kwargs)¶
基类:
RectangleCSS3边框图像的概念。
- 参数:
- border:列表
边框信息格式为(底部,右侧,顶部,左侧)。每个值以像素为单位。
- auto_scale:字符串
在 1.9.1 版本加入.
在 1.9.2 版本发生变更: 这原本是一个布尔值,现已改为字符串状态。
可为以下值之一:'off'、'both'、'x_only'、'y_only'、'y_full_x_lower'、'x_full_y_lower'、'both_lower'。
Autoscale 控制 9-slice 的行为。
默认情况下,边框值会被精确保留,这意味着如果对象的总尺寸小于边框值,你将遇到一些“渲染错误”,纹理可能会出现内外颠倒的情况。这也使得无法实现一个比其源纹理尺寸更大的圆角按钮。auto_scale 的各种选项将允许你实现这两种渲染类型的混合效果。
'off':默认值,行为与之前 auto_scale 为 False 时的 BorderImage 相同。
'both':根据BorderImage的尺寸同时缩放x和y维度的边框,这会禁用BorderImage,使其渲染效果与普通Image相同。
'x_only':Y 维度保持默认行为,而 X 维度则根据 BorderImage 的宽度进行缩放。
'y_only':X 维度作为默认值,Y 则根据 BorderImage 的高度进行缩放。
'y_full_x_lower':Y 的缩放方式与 'y_only' 相同,仅当缩放后的尺寸小于提供的边框时,Y 才进行缩放。
'x_full_y_lower':X 的缩放方式与 'x_only' 相同,Y 仅在缩放后的大小小于提供的边框时才进行缩放。
'both_lower':这是1.9.1版本中auto_scale为True时的行为。如果BorderImage小于源图像,则X和Y两个维度都将被缩放。
如果BorderImage的尺寸(水平或垂直方向)小于其边框之和,且此属性设置为True,则边框将被重新缩放以适应较小的尺寸。
- auto_scale¶
用于设置当BorderImage过小时是否自动缩放边角的属性。
- border¶
用于获取/设置类边框的属性。
- display_border¶
用于获取/设置边框显示尺寸的属性。
- class kivy.graphics.BoxShadow(*args, **kwargs)¶
-
在 2.2.0 版本加入.
在 2.3.0 版本发生变更: 修复了使用
add()、insert()和remove()管理Canvas的问题。此前,使用这些方法管理Canvas没有任何效果。基类也从
Fbo更改为InstructionGroup。- 参数:
- inset:布尔值,默认为
False。 定义阴影是从内向外绘制,还是从轮廓向``BoxShadow``指令内部绘制。
- size:列表 | 元组,默认为
(100.0, 100.0)。 定义阴影的原始尺寸,即设置此参数时,不应考虑
blur_radius和spread_radius属性值的变化。- pos:列表或元组,默认为
(0.0, 0.0)。 定义阴影的原始位置,即设置此参数时,不应考虑
offset属性值的变化。- offset:列表或元组,默认为
(0.0, 0.0)。 以 (水平, 垂直) 格式指定阴影偏移量。偏移量的正值表示阴影应向右和/或向上移动。负值表示阴影应向左和/或向下移动。
- blur_radius:浮点数,默认值为
15.0。 定义阴影模糊半径。控制阴影的扩展范围和柔和度。
- spread_radius:列表或元组,默认值为
(0.0, 0.0)。 定义阴影的收缩/扩展。
- border_radius:列表或元组,默认为
(0.0, 0.0, 0.0, 0.0)。 指定用于圆角的半径,按顺时针方向依次为:左上、右上、右下、左下。
- inset:布尔值,默认为
- blur_radius¶
定义阴影模糊半径。控制阴影的扩展范围和柔和度。
默认为
15.0。在下图中,阴影模糊效果长度的起始和结束位置已标明。颜色与透明度之间的过渡无缝衔接,尽管阴影看似在虚线矩形之前结束,但其末端被设计得尽可能平滑。
inset关闭:
inset开启:
备注
在某些情况下(如果这不是你的本意),将元素放置在阴影之上(在模糊半径结束之前)会导致不必要的裁剪/覆盖行为,而非连续性,从而破坏阴影的柔和收尾,如下图所示。
- inset¶
定义阴影是从内向外绘制,还是从轮廓向``BoxShadow``指令内部绘制。
默认为
False。备注
尽管内嵌模式决定了阴影的绘制行为,但``BoxShadow``指令在``canvas``层级中的位置取决于:class:`~kivy.graphics.instructions.Canvas`指令树中存在的其他图形指令。
换句话说,如果**目标**位于``canvas``层,并且你想使用默认的``inset = False``模式来创建凸起效果,则必须在``canvas.before``层中声明``BoxShadow``指令。
<MyWidget@Widget>: size_hint: None, None size: 100, 100 pos: 100, 100 canvas.before: # BoxShadow statements Color: rgba: 0, 0, 0, 0.65 BoxShadow: pos: self.pos size: self.size offset: 0, -10 blur_radius: 25 spread_radius: -10, -10 border_radius: 10, 10, 10, 10 canvas: # target element statements Color: rgba: 1, 1, 1, 1 Rectangle: pos: self.pos size: self.size
或者,如果目标位于``canvas``图层中,并且您希望使用``inset = True``模式来创建插入效果,则必须在``canvas``图层中,紧跟在**目标**``canvas``声明之后声明``BoxShadow``指令,或者在``canvas.after``中声明它。
<MyWidget@Widget>: size_hint: None, None size: 100, 100 pos: 100, 100 canvas: # target element statements Color: rgba: 1, 1, 1, 1 Rectangle: pos: self.pos size: self.size # BoxShadow statements Color: rgba: 0, 0, 0, 0.65 BoxShadow: inset: True pos: self.pos size: self.size offset: 0, -10 blur_radius: 25 spread_radius: -10, -10 border_radius: 10, 10, 10, 10
总结:
高度效果 -
inset = False:BoxShadow指令需要在目标元素**之前**绘制。插入效果 -
inset = True:BoxShadow指令需要在目标元素**之后**绘制。
一般来说,
BoxShadow比 CSS 的 box-shadow 更为灵活,因为inset = False和inset = True模式分别不会限制阴影在目标元素下方和上方的绘制。实际上,您可以在Canvas声明树中定义任何您想要的层级结构,以创建超越常见阴影效果的更复杂效果。模式:
``False``(默认值)- 阴影在``BoxShadow``指令内部向外绘制,产生凸起效果。
True- 阴影从轮廓向内绘制到BoxShadow指令内部,产生内嵌效果。
- offset¶
以 [水平, 垂直] 格式指定阴影偏移量。偏移量为正值表示阴影应向右和/或向上移动。负值表示阴影应向左和/或向下移动。
默认为
(0.0, 0.0)。为使该属性按预期工作,建议
pos的值与阴影目标元素的位置一致,如下例所示:inset关闭:
inset开启:
- pos¶
定义阴影的原始位置,即设置此属性时,不应考虑
offset属性值的变化。默认为
(0.0, 0.0)。备注
建议该属性与阴影目标元素的原始位置保持一致。如需调整水平和垂直偏移,请改用
offset属性。
- size¶
定义阴影的原始尺寸,即不应考虑
blur_radius和spread_radius属性值的变化。inset关闭:根据
blur_radius和spread_radius属性返回调整后的阴影尺寸。
inset开启:返回原始尺寸(与指定值相同)。
默认为
(100.0, 100.0)。备注
建议将该属性与阴影目标元素的原始尺寸保持一致。如需控制阴影原始
size的收缩/扩展,请改用spread_radius。
- spread_radius¶
定义阴影在 [水平, 垂直] 格式下的收缩/扩展。
默认为
(0.0, 0.0)。该属性在以下场景中尤为有用:当您希望通过为
spread_radius设置负值,并为blur_radius设置较大值,以实现元素周围更柔和的阴影效果时,可参考 示例 中的做法。inset关闭:在下图中,目标元素的原始尺寸为
200 x 150px。对spread_radius值的正向调整会导致阴影的原始size增大,而负向值则会使阴影缩小。
inset开启:正值会使阴影向边界框内扩展,而负值则会使阴影收缩。
- class kivy.graphics.Callback(callback=None, **kwargs)¶
基类:
Instruction回调(Callback)是一种指令,在执行绘图操作时会被调用。当向画布(canvas)添加指令时,你可以这样做:
with self.canvas: Color(1, 1, 1) Rectangle(pos=self.pos, size=self.size) Callback(self.my_callback)
回调函数的定义必须为:
def my_callback(self, instr): print('I have been called!')
警告
请注意,如果您频繁或高成本地调用回调函数,可能会显著降低渲染性能。
画布的更新不会在发生新事件之前自动进行。在你的回调函数中,你可以请求更新:
with self.canvas: self.cb = Callback(self.my_callback) # then later in the code self.cb.ask_update()
如果你使用Callback类调用其他工具包的渲染方法,将会遇到OpenGL上下文的问题。其他工具包可能已经修改了OpenGL状态,一旦程序流程返回到Kivy,它就会崩溃。可能会出现故障、崩溃、黑洞等问题。为避免这种情况,你可以激活:attr:`reset_context`选项。它会在调用你的回调后重置OpenGL上下文状态,以确保Kivy的渲染正确。
警告
reset_context并非完整的 OpenGL 重置。如果您遇到相关问题,请联系我们。- ask_update(self)¶
通知父画布,我们希望它在下一帧进行更新。当您因某些值发生变化而需要触发重绘时,此功能非常有用。
在 1.0.4 版本加入.
- callback¶
用于获取/设置函数的属性。
- reset_context¶
如果你希望在回调执行后重置Kivy的OpenGL上下文,请将此设置为True。
- class kivy.graphics.Canvas(**kwargs)¶
基类:
CanvasBase用于绘制的指令。
备注
Canvas 支持 Python 的
with语句及其进入与退出语义。不使用``with``语句使用画布的示例:
self.canvas.add(Color(1., 1., 0)) self.canvas.add(Rectangle(size=(50, 50)))
使用Python的``with``语句来操作画布:
with self.canvas: Color(1., 1., 0) Rectangle(size=(50, 50))
- add(self, Instruction c)¶
将
Instruction追加到我们的列表中。如果画布包含 after 组,则该指令会插入到 after 组之前,而 after 组仍保持在最后。这与insert()的工作方式不同,后者可以在任意位置插入。
- after¶
用于获取“after”组的属性。
- ask_update(self)¶
通知画布,我们希望它在下一帧进行更新。当您因某些值发生变化而需要触发重绘时,这非常有用。
- before¶
用于获取“before”组的属性。
- clear(self)¶
清除画布中的所有
Instruction,使其保持干净。
- draw(self)¶
将指令应用到我们的窗口。
- opacity¶
用于获取/设置画布不透明度的属性。
在 1.4.1 版本加入.
opacity 属性控制画布及其子元素的透明度。请注意,这是一个累积属性:该值会与当前全局透明度相乘,并将结果应用于当前上下文颜色。
例如:如果父级的不透明度为0.5,而子级的不透明度为0.2,那么子级的实际不透明度将是0.5 * 0.2 = 0.1。
然后,不透明度在着色器中应用如下:
frag_color = color * vec4(1.0, 1.0, 1.0, opacity);
- remove(self, Instruction c)¶
- class kivy.graphics.ChangeState(**kwargs)¶
-
当前渲染上下文。
在 1.6.0 版本加入.
- class kivy.graphics.ClearBuffers(*args, **kwargs)¶
基类:
Instruction在 1.3.0 版本加入.
根据指令的缓冲区掩码属性清除指定的缓冲区。默认情况下,仅清除颜色缓冲区。
- clear_color¶
如果为 True,颜色缓冲区将被清除。
- clear_depth¶
如果为 True,深度缓冲区将被清除。
- clear_stencil¶
如果为 True,则模板缓冲区将被清除。
- class kivy.graphics.ClearColor(r, g, b, a, **kwargs)¶
基类:
Instruction在 1.3.0 版本加入.
设置用于通过glClear函数或:class:`ClearBuffers`图形指令清除缓冲区时所使用的清除颜色。
- a¶
Alpha 分量,取值范围在 0 到 1 之间。
- b¶
蓝色分量,取值范围在0到1之间。
- g¶
绿色分量,取值范围在0到1之间。
- r¶
红色分量,取值范围在0到1之间。
- rgb¶
RGB 颜色,一个包含 3 个值的列表,取值范围为 0-1,其中 alpha 将为 1。
- rgba¶
用于清除颜色的RGBA颜色,一个包含4个0-1范围内值的列表。
- class kivy.graphics.Color(*args, **kwargs)¶
-
在其之后绘制。
这表示一个介于0和1之间的颜色,但在画布中作为*乘数*应用于其后任何顶点指令的纹理。如果未设置纹理,则顶点指令将采用Color指令的精确颜色。
例如,如果一个 Rectangle 的纹理具有均匀颜色
(0.5, 0.5, 0.5, 1.0),且前面的 Color 指令设置了rgba=(1, 0.5, 2, 1),那么实际可见的颜色将是(0.5, 0.25, 1.0, 1.0),因为 Color 指令作为乘数应用于每个 rgba 分量。在这种情况下,超出 0-1 范围的 Color 分量会产生可见效果,因为蓝色分量的强度被加倍了。在Python中声明一个Color,你可以这样做::
from kivy.graphics import Color # create red v c = Color(1, 0, 0) # create blue color c = Color(0, 1, 0) # create blue color with 50% alpha c = Color(0, 1, 0, .5) # using hsv mode c = Color(0, 1, 1, mode='hsv') # using hsv mode + alpha c = Color(0, 1, 1, .2, mode='hsv')
你也可以通过关键字参数来设置颜色组件,这些组件作为属性可用,例如::
c = Color(b=0.5) # sets the blue component only
在kv语言中,你可以直接设置颜色属性:
<Rule>: canvas: # red color Color: rgb: 1, 0, 0 # blue color Color: rgb: 0, 1, 0 # blue color with 50% alpha Color: rgba: 0, 1, 0, .5 # using hsv mode Color: hsv: 0, 1, 1 # using hsv mode + alpha Color: hsv: 0, 1, 1 a: .5
- a¶
Alpha 分量,取值范围在 0 到 1 之间。
- b¶
蓝色分量,取值范围在0到1之间。
- g¶
绿色分量,取值范围在0到1之间。
- h¶
色调分量,取值范围在0到1之间。
- hsv¶
HSV 颜色,包含 3 个 0-1 范围内的值,alpha 将为 1。
- r¶
红色分量,取值范围在0到1之间。
- rgb¶
RGB 颜色,由 0-1 范围内的 3 个值组成的列表。alpha 值将为 1。
- rgba¶
RGBA颜色,由0-1范围内的4个值组成的列表。
- s¶
饱和度分量,取值范围在0到1之间。
- v¶
值组件,范围在0到1之间。
- class kivy.graphics.ContextInstruction(**kwargs)¶
基类:
Instruction这些指令没有直接的视觉表现,而是修改当前画布的状态,例如纹理绑定、设置颜色参数、矩阵操作等。
- class kivy.graphics.Ellipse(*args, **kwargs)¶
基类:
Rectangle- 参数:
- segments:整数,默认值根据角度之间的范围计算得出。
定义绘制椭圆所需的线段数量。线段越多,椭圆绘制得越平滑,但您也可以利用此属性创建具有3条或更多边的多边形。
- angle_start:浮点数,默认值为 0.0
指定圆盘部分的起始角度,单位为度。
- angle_end:浮点数,默认值为360.0
指定圆盘部分的结束角度,单位为度。
在 1.0.7 版本发生变更: 添加了angle_start和angle_end。
在 2.2.0 版本发生变更: 默认的线段数量不再是180,现在根据角度范围计算,因为这是一种更高效的方法。
- angle_end¶
椭圆结束角度(以度为单位),默认为360。
- angle_start¶
椭圆起始角度,单位为度,默认值为0。
- segments¶
用于获取/设置椭圆段数的属性。如果段数较多,椭圆绘制将更加平滑,但您也可以利用此属性创建具有3条或更多边的多边形。小于3的值将不会被表示,段数将自动计算。
在 2.2.0 版本发生变更: 允许的最小段数为3。小于此值的设置将被忽略,段数将自动计算。
- class kivy.graphics.Fbo(*args, **kwargs)¶
-
with 语句。
- 参数:
- clear_color:元组,默认值为 (0, 0, 0, 0)
定义用于清除帧缓冲区的默认颜色。
- size:元组,默认值为 (1024, 1024)
帧缓冲区的默认大小
- push_viewport:布尔值,默认为 True
如果为True,OpenGL视口将被设置为帧缓冲大小,并在帧缓冲释放时自动恢复。
- with_depthbuffer:布尔值,默认为False
如果为 True,帧缓冲区将分配一个 Z 缓冲区。
- with_stencilbuffer:布尔值,默认为False
在 1.9.0 版本加入.
如果为 True,帧缓冲区将分配一个模板缓冲区。
- texture:
Texture,默认为 None 如果为 None,将创建一个默认纹理。
备注
在kivy 1.9.0中,不支持同时使用``with_stencilbuffer``和``with_depthbuffer``。
- add_reload_observer(self, callback)¶
添加一个回调函数,在整个图形上下文重新加载后调用。这是你可以在GPU中重新上传自定义数据的地方。
在 1.2.0 版本加入.
- 参数:
- callback: func(context) -> 返回 None
第一个参数将是上下文本身。
- bind(self)¶
将FBO绑定到当前的OpenGL上下文中。`Bind`意味着你启用了帧缓冲,所有绘制操作将在帧缓冲内部进行,直到调用:meth:`release`为止。
当您向其中添加图形对象时,绑定/释放操作会自动调用。如果您想自行操作帧缓冲,可以这样使用::
self.fbo = FBO() self.fbo.bind() # do any drawing command self.fbo.release() # then, your fbo texture is available at print(self.fbo.texture)
- clear_buffer(self)¶
使用
clear_color清除帧缓冲。在调用此方法之前,您需要自行绑定帧缓冲器:
fbo.bind() fbo.clear_buffer() fbo.release()
- clear_color¶
以(红、绿、蓝、透明度)格式清除颜色。
- get_pixel_color(self, int wx, int wy)¶
获取指定窗口坐标(wx, wy)处像素的颜色。返回结果为RGBA格式。
在 1.8.0 版本加入.
- pixels¶
获取像素纹理,仅限RGBA格式,无符号字节。图像原点位于左下角。
在 1.7.0 版本加入.
- release(self)¶
释放帧缓冲(解除绑定)。
- remove_reload_observer(self, callback)¶
从观察者列表中移除之前通过
add_reload_observer()添加的回调。在 1.2.0 版本加入.
- size¶
帧缓冲区的尺寸,格式为(宽度,高度)。
如果您更改大小,帧缓冲区内容将会丢失。
- texture¶
返回帧缓冲纹理。
- exception kivy.graphics.GraphicException¶
基类:
Exception当图形错误被触发时引发的异常。
- class kivy.graphics.Instruction(**kwargs)¶
-
仅供使用,请勿直接使用。
- flag_data_update(self)¶
- flag_update(self, int do_parent=1)¶
- group¶
group: unicode
- proxy_ref¶
返回对指令的代理引用,即不创建对控件的引用。更多信息请参阅 weakref.proxy。
在 1.7.2 版本加入.
- class kivy.graphics.InstructionGroup(**kwargs)¶
基类:
Instruction图形指令的一部分。它可以直接按如下方式使用:
blue = InstructionGroup() blue.add(Color(0, 0, 1, 0.2)) blue.add(Rectangle(pos=self.pos, size=(100, 100)))
green = InstructionGroup() green.add(Color(0, 1, 0, 0.4)) green.add(Rectangle(pos=(100, 100), size=(100, 100)))
# 此处,self 应为 Widget 或其子类 [self.canvas.add(group) for group in [blue, green]]
- add(self, Instruction c)¶
在我们的列表中添加一个新的
Instruction。
- children¶
children: list
- clear(self)¶
移除所有
Instructions。
- get_group(self, unicode groupname)¶
返回一个可迭代对象,包含所有具有特定组名的
Instructions。
- indexof(self, Instruction c)¶
- insert(self, int index, Instruction c)¶
在索引位置向我们的列表插入一个新的
Instruction。
- length(self)¶
- remove(self, Instruction c)¶
从我们的列表中移除一个现有的
Instruction。
- remove_group(self, unicode groupname)¶
移除所有具有特定组名的
Instructions。
- class kivy.graphics.Line(**kwargs)¶
-
绘制一条线可以轻松完成:
with self.canvas: Line(points=[100, 100, 200, 100, 100, 200], width=10)
该线条有3种内部绘制模式,为了获得最佳效果,您应当了解这些模式:
如果
width为 1.0 且force_custom_drawing_method为 False,则将使用 OpenGL 中的标准 GL_LINE 绘制方式。此时dash_length、dash_offset和dashes属性将生效,而 cap 和 joint 相关的属性在此情况下没有意义。如果
width大于 1.0 或force_custom_drawing_method为 True,则将使用基于三角剖分的自定义绘制方法。在此模式下,dash_length、dash_offset和dashes不起作用。此外,如果当前颜色的 alpha 值小于 1.0,则会在内部使用模板来绘制线条。
- 参数:
- points:列表
格式为(x1, y1, x2, y2...)的点列表。
- dash_length:整数
线段长度(若为虚线),默认为1。
- dash_offset:整数
段与下一段起点之间的偏移量,默认为0。更改此值可使其呈现虚线效果。
- dashes:整数列表
[ON长度,偏移量,ON长度,偏移量,...]的列表。例如,
[2,4,1,6,8,2]会创建一条线,其中第一个破折号长度为2,然后偏移量为4,接着破折号长度为1,再偏移量为6,依此类推。默认为[]。更改此属性会使线条变为虚线,并覆盖 dash_length 和 dash_offset。- width:浮点数
线条宽度,默认为1.0。
- cap:字符串类型,默认值为 'round'
更多信息请参阅
cap。- joint:字符串,默认值为 'round'
更多信息请参阅
joint。- cap_precision:整数,默认为10
更多信息请参阅
cap_precision。- joint_precision:整数,默认值为10
更多信息请参阅
joint_precision,更多信息请参阅cap_precision。- joint_precision:整数,默认值为10
更多信息请参阅
joint_precision。- close:布尔值,默认为 False
如果为 True,线条将被闭合。
- circle:列表
- ellipse:列表
- rectangle:列表
- bezier:列表
- bezier_precision:整数,默认值为180
贝塞尔曲线绘制的精度。
- force_custom_drawing_method:布尔值,默认为False
如果使用自定义绘制方法,则不应再依赖
width是否等于 1.0。
在 1.0.8 版本发生变更: dash_offset 和 dash_length 已被添加。
在 1.4.1 版本发生变更: 已添加 width、cap、joint、cap_precision、joint_precision、close、ellipse、rectangle 属性。
在 1.4.1 版本发生变更: bezier、bezier_precision 已被添加。
在 1.11.0 版本发生变更: dashes 已被添加。
在 2.3.0 版本发生变更: force_custom_drawing_method 已被添加。
- bezier¶
使用此属性来构建贝塞尔曲线,无需计算
points。您只能设置此属性,不能获取它。参数必须是一个包含2n个元素的元组,其中n为点的数量。
用法:
Line(bezier=(x1, y1, x2, y2, x3, y3)
在 1.4.2 版本加入.
备注
贝塞尔线的计算在点数较少时开销不大,但复杂度是二次方的,因此包含大量点的线条构建成本可能非常高,请谨慎使用!
- bezier_precision¶
2 个线段之间绘制贝塞尔曲线的迭代次数,默认为 180。bezier_precision 必须至少为 1。
在 1.4.2 版本加入.
- cap¶
确定线条的端点样式,默认为“round”(圆头)。可选值为“none”(无)、“square”(方头)或“round”(圆头)。
在 1.4.1 版本加入.
- cap_precision¶
绘制“圆头”帽的迭代次数,默认为10。cap_precision 必须至少为1。
在 1.4.1 版本加入.
- circle¶
使用此属性来构建圆形,无需计算
points。参数必须是一个元组,格式为 (center_x, center_y, radius, angle_start, angle_end, segments)。
center_x 和 center_y 表示圆的中心。
radius 表示圆的半径。
(可选)angle_start 和 angle_end 以度为单位。默认值为 0 和 360。
(可选)segments 是椭圆的精度。默认值根据 angle 的范围计算得出。
请注意,是否要:attr:`close`(闭合)这个圆环完全由您决定。
例如,要构建一个简单的椭圆,在Python中:
# simple circle Line(circle=(150, 150, 50)) # only from 90 to 180 degrees Line(circle=(150, 150, 50, 90, 180)) # only from 90 to 180 degrees, with few segments Line(circle=(150, 150, 50, 90, 180, 20))
在 1.4.1 版本加入.
在 2.2.0 版本发生变更: 现在你可以通过该属性获取生成的圆形。
- close¶
如果为 True,则根据
close_mode将线条两端连接起来,使其闭合。在 1.4.1 版本加入.
- close_mode¶
定义线条端点如何连接。默认值为
"straight-line"。备注
不同关闭模式的支持取决于绘制形状的方式。
可用模式:
在 2.2.0 版本加入.
- dash_length¶
用于获取/设置曲线中虚线长度的属性。
在 1.0.8 版本加入.
- dash_offset¶
用于获取/设置曲线中虚线之间偏移量的属性。
在 1.0.8 版本加入.
- dashes¶
用于获取/设置``dashes``的属性。
[ON长度,偏移量,ON长度,偏移量,...]的列表。例如,
[2,4,1,6,8,2]将创建一条线,其中第一个破折号长度为2,然后偏移量为4,接着破折号长度为1,再偏移量为6,依此类推。在 1.11.0 版本加入.
- ellipse¶
使用此属性来构建椭圆,无需计算
points。参数必须是一个包含 (x, y, width, height, angle_start, angle_end, segments) 的元组。
x 和 y 表示椭圆的左下角。
width 和 height 表示椭圆的大小。
(可选)angle_start 和 angle_end 以度为单位。默认值为 0 和 360。
(可选)segments 是椭圆的精度。默认值根据 angle 的范围计算得出。您可以使用此属性创建具有 3 条或更多边的多边形。小于 3 的值将不会被表示,且段数将自动计算。
请注意,是否调用
close由您决定。如果您选择关闭图形,请使用close_mode来定义图形的闭合方式,即通过 ``"straight-line"``(直线连接)或 ``"center-connected"``(中心连接)进行闭合。例如,要构建一个简单的椭圆,在Python中:
# simple ellipse Line(ellipse=(0, 0, 150, 150)) # only from 90 to 180 degrees Line(ellipse=(0, 0, 150, 150, 90, 180)) # only from 90 to 180 degrees, with few segments Line(ellipse=(0, 0, 150, 150, 90, 180, 20))
在 1.4.1 版本加入.
在 2.2.0 版本发生变更: 现在你可以通过该属性获取生成的椭圆。
允许的最小段数为3。小于此值的设置将被忽略,段数将自动计算。
- force_custom_drawing_method¶
如果为 True,无论宽度如何,线条都将使用自定义绘制方法绘制。
在 2.3.0 版本加入.
- joint¶
确定线条的连接方式,默认为'round'。可选值为'none'、'round'、'bevel'、'miter'。
在 1.4.1 版本加入.
- joint_precision¶
绘制“圆角”关节的迭代次数,默认为10。joint_precision 必须至少为1。
在 1.4.1 版本加入.
- points¶
用于获取/设置线条点的属性。
警告
这将始终根据新的点列表重建整个图形,这可能会非常消耗CPU资源。
- rectangle¶
使用此属性来构建一个矩形,无需计算
points。参数必须是一个 (x, y, width, height) 的元组。
x 和 y 表示矩形的左下角位置。
width 和 height 表示尺寸。
线条会自动闭合。
用法:
Line(rectangle=(0, 0, 200, 200))
在 1.4.1 版本加入.
在 2.2.0 版本发生变更: 现在你可以通过该属性获取生成的矩形。
- rounded_rectangle¶
使用此属性来构建一个矩形,无需计算
points。参数必须是以下形式之一的元组:
(x, y, width, height, corner_radius)
(x, y, width, height, corner_radius, resolution)
(x, y, width, height, corner_radius1, corner_radius2, corner_radius3, corner_radius4)
(x, y, width, height, corner_radius1, corner_radius2, corner_radius3, corner_radius4, resolution)
x 和 y 表示矩形的左下角位置。
width 和 height 表示尺寸。
corner_radius 指定用于圆角的半径,按顺时针方向依次为:左上、右上、右下、左下。
resolution 是用于在每个角绘制圆弧的线段数量(默认为45)。
线条会自动闭合。
用法:
Line(rounded_rectangle=(0, 0, 200, 200, 10, 20, 30, 40, 100))
在 1.9.0 版本加入.
在 2.2.0 版本发生变更: resolution 的默认值从 30 改为 45。
现在你可以通过该属性生成圆角矩形。
corner_radius 的顺序已更改,以匹配 RoundedRectangle 的 radius 属性(顺时针方向)。在之前的版本中,顺序为左下、右下、右上、左上。现在两者均为顺时针:左上、右上、右下、左下。若要保持角半径顺序而不手动更改顺序,可以使用 Python 内置方法 reversed 或 [::-1] 来反转角半径的顺序。
- width¶
确定线条的宽度,默认为1.0。
在 1.4.1 版本加入.
- class kivy.graphics.LoadIdentity(**kwargs)¶
-
指令堆栈属性(默认值为'modelview_mat')
在 1.6.0 版本加入.
- stack¶
要使用的矩阵栈名称。可以是'modelview_mat'、'projection_mat'或'frag_modelview_mat'。
- class kivy.graphics.MatrixInstruction(*args, **kwargs)¶
-
- matrix¶
矩阵属性。来自变换模块的矩阵。当发生更改时,使用此属性设置矩阵非常重要,因为它会通知上下文有关更新的信息。
- stack¶
要使用的矩阵栈名称。可以是'modelview_mat'、'projection_mat'或'frag_modelview_mat'。
在 1.6.0 版本加入.
- class kivy.graphics.Mesh(**kwargs)¶
-
在OpenGL ES 2.0及我们的图形实现中,索引数量不能超过65535个。
顶点列表描述如下:
vertices = [x1, y1, u1, v1, x2, y2, u2, v2, ...] | | | | +---- i1 ----+ +---- i2 ----+
如果要绘制三角形,添加3个顶点。然后可以按如下方式创建索引列表:
indices = [0, 1, 2]
在 1.1.0 版本加入.
- 参数:
- vertices:可迭代对象
顶点列表,格式为(x1, y1, u1, v1, x2, y2, u2, v2...)。
- indices:可迭代对象
格式为 (i1, i2, i3...) 的索引列表。
- mode:字符串
vbo 的模式。更多信息请参阅
mode。默认为 'points'。- fmt:列表
默认情况下,顶点的格式由2D坐标(x, y)和2D纹理坐标(u, v)描述。列表中的每个元素应为元组或列表,形式如下:
(variable_name, size, type)
这将允许将顶点数据映射到GLSL指令。
[(b'v_pos', 2, 'float'), (b'v_tc', 2, 'float'),]
将允许使用
attribute vec2 v_pos; attribute vec2 v_tc;
在GLSL的顶点着色器中。
在 1.8.1 版本发生变更: 之前,vertices 和 indices 总是会被转换为列表,现在,只有在它们未实现缓冲区接口时才会被转换为列表。因此,例如 numpy 数组、python 数组等可以直接使用,而无需创建任何额外的副本。然而,缓冲区不能是只读的(即使它们未被修改,由于 cython 的限制),并且必须在内存中是连续的。
备注
当传入 memoryview 或实现了缓冲区接口的实例时,vertices 应为浮点数缓冲区(Python 数组中的 'f' 代码),indices 应为无符号短整型缓冲区(Python 数组中的 'H' 代码)。其他格式的数组仍需要在内部进行转换,从而抵消任何潜在的性能提升。
- indices¶
用于指定绘制网格时顶点顺序的顶点索引。
- mode¶
用于绘制顶点/索引的VBO模式。可以是'points'、'line_strip'、'line_loop'、'lines'、'triangles'、'triangle_strip'或'triangle_fan'之一。
- vertices¶
用于构建Mesh的x、y、u、v坐标列表。目前,Mesh指令不允许你更改顶点的格式,这意味着它仅支持x、y加上一个纹理坐标。
- class kivy.graphics.Point(**kwargs)¶
-
:宽度/高度为
pointsize的2倍。- 参数:
- points:列表
格式为(x1, y1, x2, y2...)的点列表,其中每对坐标指定一个新点的中心。
- pointsize:浮点数,默认值为1。
点的大小,从中心到边缘测量。因此,值为1.0意味着实际大小将是2.0 x 2.0。
警告
从1.0.7版本开始,顶点指令的顶点数量限制为65535个(准确来说是顶点索引)。列表中的2个条目(x, y)会被转换为4个顶点。因此,在Point()类内部,限制为2^15-2。
- add_point(self, float x, float y)¶
向当前
points列表中添加一个点。如果你打算添加多个点,建议使用此方法,而不是重新分配一个新的
points列表。重新分配新的points列表会重新计算并将整个缓冲区重新上传到 GPU。如果使用 add_point,则只会上传更改的部分。
- points¶
用于获取/设置点列表中中心点的属性。每对坐标指定一个新点的中心。
- pointsize¶
用于获取/设置点大小的属性。该大小是从中心到边缘测量的,因此值为1.0时,实际大小将为2.0 x 2.0。
- class kivy.graphics.PopMatrix(*args, **kwargs)¶
-
- stack¶
要使用的矩阵栈名称。可以是'modelview_mat'、'projection_mat'或'frag_modelview_mat'。
在 1.6.0 版本加入.
- class kivy.graphics.PopState(*args, **kwargs)¶
-
状态栈。
在 1.6.0 版本加入.
- class kivy.graphics.PushMatrix(*args, **kwargs)¶
-
- stack¶
要使用的矩阵栈名称。可以是'modelview_mat'、'projection_mat'或'frag_modelview_mat'。
在 1.6.0 版本加入.
- class kivy.graphics.PushState(*args, **kwargs)¶
-
状态栈。
在 1.6.0 版本加入.
- class kivy.graphics.Quad(**kwargs)¶
-
- 参数:
- points:列表
格式为(x1, y1, x2, y2, x3, y3, x4, y4)的点列表。
- points¶
用于获取/设置四边形点的属性。
- class kivy.graphics.Rectangle(**kwargs)¶
-
- 参数:
- pos:列表
矩形的位置,格式为 (x, y)。
- size:列表
矩形的大小,格式为(宽度,高度)。
- points¶
用于获取绘制顶点所用点的属性。
在 2.3.0 版本加入.
- pos¶
用于获取/设置矩形位置的属性。
- size¶
用于获取/设置矩形大小的属性。
- class kivy.graphics.RenderContext(*args, **kwargs)¶
基类:
Canvas顶点着色器
片段着色器
默认纹理
状态栈(颜色、纹理、矩阵...)
- shader¶
返回与渲染上下文关联的着色器。
- use_parent_frag_modelview¶
如果为 True,将使用父级片段模型视图矩阵。
在 1.10.1 版本加入: rc = RenderContext(use_parent_frag_modelview=True)
- use_parent_modelview¶
如果为 True,将使用父级模型视图矩阵。
在 1.7.0 版本加入.
在之前:
rc['modelview_mat'] = Window.render_context['modelview_mat']
现在:
rc = RenderContext(use_parent_modelview=True)
- use_parent_projection¶
如果为 True,将使用父级投影矩阵。
在 1.7.0 版本加入.
在之前:
rc['projection_mat'] = Window.render_context['projection_mat']
现在:
rc = RenderContext(use_parent_projection=True)
- class kivy.graphics.Rotate(*args, **kwargs)¶
基类:
Transform在模型视图矩阵上。之后,您可以通过例如::来设置指令的属性。
rot.angle = 90 rot.axis = (0, 0, 1)
- angle¶
用于获取/设置旋转角度的属性。
- axis¶
用于获取/设置旋转轴的属性。
轴的格式为(x,y,z)。
- origin¶
旋转的原点。
在 1.7.0 版本加入.
原点的格式可以是 (x, y) 或 (x, y, z)。
- class kivy.graphics.Scale(*args, **kwargs)¶
基类:
Transform使用三个参数创建:
Scale(x, y, z) # scale the axes independently
在 2.3.0 版本发生变更: 允许使用关键字参数来提供x、y和z。已移除已弃用的Scale(s),改用Scale(x, y, z)。
- origin¶
缩放的原点。
在 1.9.0 版本加入.
原点的格式可以是 (x, y) 或 (x, y, z)。
- x¶
用于获取/设置X轴缩放的属性。
在 1.6.0 版本发生变更.
- xyz¶
3D 中 x、y、z 轴上的三元组缩放向量。
在 1.6.0 版本发生变更.
- y¶
用于获取/设置Y轴缩放的属性。
在 1.6.0 版本发生变更.
- z¶
用于获取/设置Z轴缩放比例的属性。
在 1.6.0 版本发生变更.
- class kivy.graphics.SmoothEllipse(**kwargs)¶
基类:
Ellipse其用法与
Ellipse相同。备注
目前仍不支持纹理抗锯齿。因此,如果使用
texture或source定义纹理,抗锯齿功能将被禁用。在 2.3.0 版本加入.
- default_texture¶
default_texture: kivy.graphics.texture.Texture
- class kivy.graphics.SmoothLine(**kwargs)¶
基类:
Line结果。它有一些缺点:
如果线条自身交叉,使用透明度绘制线条可能不会得到预期的效果。
它使用带有预乘Alpha的自定义纹理。
宽度小于1像素的线条不受支持:它们看起来会是一样的。
警告
这是一项未完成的工作,属于实验性质,可能会出现崩溃。
在 1.9.0 版本加入.
- overdraw_width¶
确定线条的过度绘制宽度,默认为1.2。
- premultiplied_texture(self)¶
- class kivy.graphics.SmoothQuad(**kwargs)¶
基类:
Quad其用法与
Quad相同。备注
目前仍不支持纹理抗锯齿。因此,如果使用
texture或source定义纹理,抗锯齿功能将被禁用。在 2.3.0 版本加入.
- default_texture¶
default_texture: kivy.graphics.texture.Texture
- class kivy.graphics.SmoothRectangle(**kwargs)¶
基类:
Rectangle其用法与
Rectangle相同。备注
目前仍不支持纹理抗锯齿。因此,如果使用
texture或source定义纹理,抗锯齿功能将被禁用。在 2.3.0 版本加入.
- default_texture¶
default_texture: kivy.graphics.texture.Texture
- class kivy.graphics.SmoothRoundedRectangle(**kwargs)¶
-
其用法与
RoundedRectangle相同。备注
目前仍不支持纹理抗锯齿。因此,如果使用
texture或source定义纹理,抗锯齿功能将被禁用。在 2.3.0 版本加入.
- default_texture¶
default_texture: kivy.graphics.texture.Texture
- class kivy.graphics.SmoothTriangle(**kwargs)¶
基类:
Triangle其用法与
Triangle相同。备注
目前仍不支持纹理抗锯齿。因此,如果使用
texture或source定义纹理,抗锯齿功能将被禁用。在 2.3.0 版本加入.
- default_texture¶
default_texture: kivy.graphics.texture.Texture
- class kivy.graphics.StencilPop¶
基类:
Instruction弹出模板堆栈。更多信息请参阅模块文档。
- class kivy.graphics.StencilPush(**kwargs)¶
基类:
Instruction信息。
- clear_stencil¶
clear_stencil允许在StencilPush阶段禁用模板清除操作。此选项实质上禁用了函数cgl.glClearStencil(0)和cgl.glClear(GL_STENCIL_BUFFER_BIT)的调用。如果为
True,模板将在StencilPush阶段被清理;如果为False,则不会被清理。备注
**强烈建议**设置
clear_stencil=False以提升性能并减少 GPU 使用(尤其是在有数百条指令的情况下)。然而,如果出现任何副作用(如StencilPush的伪影或不准确行为),建议重新启用清除指令,设置clear_stencil=True。在 2.3.0 版本加入.
- class kivy.graphics.StencilUnUse¶
基类:
Instruction使用当前模板缓冲区来取消设置遮罩。
- class kivy.graphics.StencilUse(**kwargs)¶
基类:
Instruction更多信息。
- func_op¶
确定用于glStencilFunc()的模板操作。可以是'never'、'less'、'equal'、'lequal'、'greater'、'notequal'、'gequal'或'always'之一。
默认情况下,操作符设置为“等于”。
在 1.5.0 版本加入.
- class kivy.graphics.Translate(*args, **kwargs)¶
基类:
Transform通过以下任一方式构造:
Translate(x, y) # translate in just the two axes Translate(x, y, z) # translate in all three axes
在 2.3.0 版本发生变更: 允许使用关键字参数来提供x、y和z。
- x¶
用于获取/设置X轴平移的属性。
- xy¶
2元组,包含2D空间中x轴和y轴的平移向量。
- xyz¶
3 个元组平移向量,分别对应三维空间中的 x、y 和 z 轴。
- y¶
用于获取/设置Y轴平移的属性。
- z¶
用于获取/设置Z轴平移的属性。
- class kivy.graphics.Triangle(**kwargs)¶
-
- 参数:
- points:列表
格式为(x1,y1,x2,y2,x3,y3)的点列表。
- points¶
用于获取/设置三角形点的属性。
- class kivy.graphics.UpdateNormalMatrix¶
-
根据当前的模型视图矩阵更新法线矩阵“normal_mat”。这将计算“normal_mat”uniform,公式为:inverse( transpose( mat3(mvm) ) )
在 1.6.0 版本加入.
- class kivy.graphics.VertexInstruction(**kwargs)¶
基类:
Instruction在画布上具有直接视觉表示的图形,如矩形、三角形、线条、椭圆等。
- source¶
此属性表示要加载纹理的文件名。如果你想使用图像作为源,可以这样做:
with self.canvas: Rectangle(source='mylogo.png', pos=self.pos, size=self.size)
以下是Kivy语言中的等效写法:
<MyWidget>: canvas: Rectangle: source: 'mylogo.png' pos: self.pos size: self.size
备注
将使用
kivy.resources.resource_find()函数来搜索该文件名。
- tex_coords¶
该属性表示用于绘制顶点指令的纹理坐标。该值必须是一个包含8个值的列表。
纹理坐标包含位置 (u, v) 和尺寸 (w, h)。尺寸可以为负值,表示“翻转”的纹理。默认情况下,tex_coords 为:
[u, v, u + w, v, u + w, v + h, u, v + h]
如果你想实现炫酷的效果,可以传入自定义的纹理坐标。
警告
刚才提到的默认值可以是负数。根据图像和标签提供者的不同,由于图像内部存储的顺序,坐标会在垂直方向上翻转。为了更快,我们不是翻转图像数据,而是直接翻转纹理坐标。
- kivy.graphics.gl_init_resources()¶
- 盒阴影
- 画布
- CGL:OpenGL的标准C接口
- 上下文指令
- 上下文管理
- 帧缓冲器
- GL 指令
- 图形编译器
- OpenGL
glActiveTexture()glAttachShader()glBindAttribLocation()glBindBuffer()glBindFramebuffer()glBindRenderbuffer()glBindTexture()glBlendColor()glBlendEquation()glBlendEquationSeparate()glBlendFunc()glBlendFuncSeparate()glBufferData()glBufferSubData()glCheckFramebufferStatus()glClear()glClearColor()glClearStencil()glColorMask()glCompileShader()glCompressedTexImage2D()glCompressedTexSubImage2D()glCopyTexImage2D()glCopyTexSubImage2D()glCreateProgram()glCreateShader()glCullFace()glDeleteBuffers()glDeleteFramebuffers()glDeleteProgram()glDeleteRenderbuffers()glDeleteShader()glDeleteTextures()glDepthFunc()glDepthMask()glDetachShader()glDisable()glDisableVertexAttribArray()glDrawArrays()glDrawElements()glEnable()glEnableVertexAttribArray()glFinish()glFlush()glFramebufferRenderbuffer()glFramebufferTexture2D()glFrontFace()glGenBuffers()glGenFramebuffers()glGenRenderbuffers()glGenTextures()glGenerateMipmap()glGetActiveAttrib()glGetActiveUniform()glGetAttachedShaders()glGetAttribLocation()glGetBooleanv()glGetBufferParameteriv()glGetError()glGetFloatv()glGetFramebufferAttachmentParameteriv()glGetIntegerv()glGetProgramInfoLog()glGetProgramiv()glGetRenderbufferParameteriv()glGetShaderInfoLog()glGetShaderPrecisionFormat()glGetShaderSource()glGetShaderiv()glGetString()glGetTexParameterfv()glGetTexParameteriv()glGetUniformLocation()glGetUniformfv()glGetUniformiv()glGetVertexAttribPointerv()glGetVertexAttribfv()glGetVertexAttribiv()glHint()glIsBuffer()glIsEnabled()glIsFramebuffer()glIsProgram()glIsRenderbuffer()glIsShader()glIsTexture()glLineWidth()glLinkProgram()glPixelStorei()glPolygonOffset()glReadPixels()glReleaseShaderCompiler()glRenderbufferStorage()glSampleCoverage()glScissor()glShaderBinary()glShaderSource()glStencilFunc()glStencilFuncSeparate()glStencilMask()glStencilMaskSeparate()glStencilOp()glStencilOpSeparate()glTexImage2D()glTexParameterf()glTexParameterfv()glTexParameteri()glTexParameteriv()glTexSubImage2D()glUniform1f()glUniform1fv()glUniform1i()glUniform1iv()glUniform2f()glUniform2fv()glUniform2i()glUniform2iv()glUniform3f()glUniform3fv()glUniform3i()glUniform3iv()glUniform4f()glUniform4fv()glUniform4i()glUniform4iv()glUniformMatrix2fv()glUniformMatrix3fv()glUniformMatrix4fv()glUseProgram()glValidateProgram()glVertexAttrib1f()glVertexAttrib1fv()glVertexAttrib2f()glVertexAttrib2fv()glVertexAttrib3f()glVertexAttrib3fv()glVertexAttrib4f()glVertexAttrib4fv()glVertexAttribPointer()glViewport()gl_init_symbols()
- OpenGL 工具函数
- 剪刀指令
- 着色器
- 模板指令
- SVG
- 曲面细分器
- 纹理
- 将自定义数据直接绘制到屏幕上。
- BGR/BGRA 支持
- NPOT纹理
- 纹理图集
- Mipmapping(多级纹理映射)
- 重新加载纹理
TextureTexture.add_reload_observer()Texture.ask_update()Texture.bind()Texture.blit_buffer()Texture.blit_data()Texture.bufferfmtTexture.colorfmtTexture.create()Texture.create_from_data()Texture.flip_horizontal()Texture.flip_vertical()Texture.get_region()Texture.heightTexture.idTexture.mag_filterTexture.min_filterTexture.mipmapTexture.pixelsTexture.remove_reload_observer()Texture.save()Texture.sizeTexture.targetTexture.tex_coordsTexture.uvposTexture.uvsizeTexture.widthTexture.wrap
TextureRegion
- 变换
- 顶点指令