几何图形#
几何方法#
- arcade.gl.geometry.quad_2d(size: Tuple[float, float] = (1.0, 1.0), pos: Tuple[float, float] = (0.0, 0.0)) Geometry [源代码]#
使用带纹理坐标的2个三角形条带创建二维四边形几何体。
- 参数:
size -- 宽度和高度
pos -- 居中位置x和y
几何图形#
- class arcade.gl.Geometry(ctx: Context, content: Sequence[BufferDescription] | None, index_buffer: Buffer | None = None, mode: int | None = None, index_element_size: int = 4)[源代码]#
基类:
顶点数组的更高级别抽象。它在内部动态生成与传入程序匹配的Vertex数组实例。这意味着我们可以使用不同的程序渲染相同的几何体,只要
Program
和BufferDescription
具有兼容的属性。几何图形对象应通过
arcade.gl.Context.geometry()
- 参数:
ctx -- 此对象所属的上下文
content -- 缓冲区列表描述
index_buffer -- 索引/元素缓冲区
mode -- 默认绘图模式
- num_vertices#
获取或设置顶点数。在正确修改这一点时要小心,并绝对确定您正在做什么。
- 类型:
集成
- append_buffer_description(descr: BufferDescription)[源代码]#
将新的BufferDescription附加到现有的几何体。。。警告::一个几何图形不能包含两个共享属性名称的BufferDescription。
- instance(program: Program) VertexArray [源代码]#
vt.得到.
arcade.gl.VertexArray
与此程序兼容
- render(program: Program, *, mode: c_uint | int | None = None, first: int = 0, vertices: int | None = None, instances: int = 1) None [源代码]#
使用特定程序渲染几何体。
几何体对象将知道缓冲区包含多少顶点,因此不需要覆盖顶点,除非您有特殊情况或在创建几何体实例后调整了缓冲区的大小。
- 参数:
program -- 用于渲染的程序
mode -- 覆盖应使用的基元模式
first -- 偏移起点顶点
vertices -- 覆盖要渲染的顶点数
instances -- 要渲染的实例数
- render_indirect(program: Program, buffer: Buffer, *, mode: c_uint | int | None = None, count: int = -1, first: int = 0, stride: int = 0)[源代码]#
使用间接渲染将顶点数组渲染到帧缓冲区。
警告
这需要OpenGL 4.3
缓冲区应具有以下结构:
// Array rendering - no index buffer (16 bytes) typedef struct { uint count; uint instanceCount; uint first; uint baseInstance; } DrawArraysIndirectCommand; // Index rendering - with index buffer 20 bytes typedef struct { GLuint count; GLuint instanceCount; GLuint firstIndex; GLuint baseVertex; GLuint baseInstance; } DrawElementsIndirectCommand;
这个
stride
是缓冲区中每个重排命令之间的字节跨度。默认情况下,我们假设数组渲染(无索引缓冲区)为16,索引渲染(带索引缓冲区)为20- 参数:
program -- 要执行的程序
buffer -- 包含一个或多个绘制参数的缓冲区
mode -- 要呈现的基元类型。三角形、线条等。
count -- 要运行的间接绘制调用数。如果省略,将执行缓冲区中的所有绘制命令。
first -- 要开始的第一个间接绘制调用
stride -- 绘制命令缓冲区的字节步长。如果缓冲区压缩得很紧,则保留默认值(0)。
VertexArray#
- class arcade.gl.VertexArray(ctx: Context, program: Program, content: Sequence[BufferDescription], index_buffer: Buffer | None = None, index_element_size: int = 4)[源代码]#
基类:
顶点数组对象的包装(VAOS)。
此对象不应从用户代码实例化。使用
arcade.gl.Geometry
取而代之的是。它会自动为您创建VAO实例。程序和顶点数组之间有许多复杂的交互,这些交互将自动为您完成。- ctx#
此对象所属的上下文
- program#
已分配的计划
- ibo#
元素/索引缓冲区
- 类型:
- num_vertices#
顶点数
- 类型:
集成
- render(mode: c_uint | int, first: int = 0, vertices: int = 0, instances: int = 1)[源代码]#
将顶点数组渲染到当前活动的帧缓冲区。
- 参数:
mode -- 要呈现的基元类型。三角形、线条等。
first -- 要从中渲染的第一个顶点
vertices -- 要渲染的顶点数
instances -- OpenGL实例,用于反复使用顶点
- render_indirect(buffer: Buffer, mode: c_uint | int, count, first, stride)[源代码]#
使用间接渲染将顶点数组渲染到帧缓冲区。
警告
这需要OpenGL 4.3
- 参数:
buffer -- 包含一个或多个绘制参数的缓冲区
mode -- 要呈现的基元类型。三角形、线条等。
count -- 要运行的间接绘制调用数
first -- 要开始的第一个间接绘制调用
stride -- 绘制命令缓冲区的字节步长。如果缓冲区压缩得很紧,则保留默认值(0)。
- transform_interleaved(buffer: Buffer, mode: c_uint | int, output_mode: c_uint | int, first: int = 0, vertices: int = 0, instances: int = 1, buffer_offset=0)[源代码]#
运行转换反馈。
- 参数:
buffer -- 用于写入输出的缓冲区
mode -- 输入原语模式
output_mode -- 输出基元模式
first -- 偏移起点顶点
vertices -- 要渲染的顶点数
instances -- 要渲染的实例数
buffer_offset -- 缓冲区(目标)的字节偏移量
- transform_separate(buffers: List[Buffer], mode: c_uint | int, output_mode: c_uint | int, first: int = 0, vertices: int = 0, instances: int = 1, buffer_offset=0)[源代码]#
向单独的缓冲区运行转换反馈写入。
- 参数:
buffers -- 用于写入输出的缓冲区
mode -- 输入原语模式
output_mode -- 输出基元模式
first -- 偏移起点顶点
vertices -- 要渲染的顶点数
instances -- 要渲染的实例数
buffer_offset -- 缓冲区(目标)的字节偏移量
- glo#