几何体#
几何方法#
- arcade.gl.geometry.quad_2d_fs() arcade.gl.vertex_array.Geometry [源代码]#
使用标准化的设备坐标创建屏幕对齐的四边形
- arcade.gl.geometry.quad_2d(size: Tuple[float, float] = (1.0, 1.0), pos: Tuple[float, float] = (0.0, 0.0)) arcade.gl.vertex_array.Geometry [源代码]#
使用带纹理坐标的2个三角形条带创建二维四边形几何体。
几何体#
- class arcade.gl.Geometry(ctx: Context, content: Optional[Sequence[arcade.gl.types.BufferDescription]], index_buffer: arcade.gl.buffer.Buffer = None, mode=None, index_element_size: int = 4)[源代码]#
基类:
object
顶点数组的更高级别抽象。它在内部动态生成与传入程序匹配的Vertex数组实例。这意味着我们可以使用不同的程序渲染相同的几何体,只要
Program
和BufferDescription
具有兼容的属性。几何图形对象应通过
arcade.gl.Context.geometry()
- 参数
- property index_buffer: Optional[arcade.gl.buffer.Buffer]#
索引/元素缓冲区(如果在创建时提供)。
- 类型
- instance(program: arcade.gl.program.Program) arcade.gl.vertex_array.VertexArray [源代码]#
拿到
arcade.gl.VertexArray
与此程序兼容
- render(program: arcade.gl.program.Program, *, mode: Optional[ctypes.c_uint] = None, first: int = 0, vertices: Optional[int] = None, instances: int = 1) None [源代码]#
使用特定程序渲染几何体。
几何体对象将知道缓冲区包含多少顶点,因此不需要覆盖顶点,除非您有特殊情况或在创建几何体实例后调整了缓冲区的大小。
- render_indirect(program: arcade.gl.program.Program, buffer: arcade.gl.buffer.Buffer, *, mode: Optional[ctypes.c_uint] = 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
- transform(program: arcade.gl.program.Program, buffer: Union[arcade.gl.buffer.Buffer, List[arcade.gl.buffer.Buffer]], *, first: int = 0, vertices: Optional[int] = None, instances: int = 1, buffer_offset: int = 0) None [源代码]#
使用变换反馈进行渲染。结果不是呈现到屏幕或帧缓冲区,而是在
buffer
我们供应。如果使用几何体着色器,则会自动检测输出基本体模式。
VertexArray#
- class arcade.gl.VertexArray(ctx: Context, program: arcade.gl.program.Program, content: Sequence[arcade.gl.types.BufferDescription], index_buffer: arcade.gl.buffer.Buffer = None, index_element_size: int = 4)[源代码]#
基类:
object
顶点数组对象的包装(VAOS)。此对象不应从用户代码实例化。使用
arcade.gl.Geometry
取而代之的是。它会自动为您创建VAO实例。程序和顶点数组之间有许多复杂的交互,这些交互将自动为您完成。- property program: arcade.gl.program.Program#
已分配的计划
- property ibo: Optional[arcade.gl.buffer.Buffer]#
元素/索引缓冲区
- static delete_glo(ctx: Context, glo: ctypes.c_uint)[源代码]#
删除此对象。当对此对象进行垃圾回收时,会自动调用此方法。
- render(mode: ctypes.c_uint, first: int = 0, vertices: int = 0, instances: int = 1)[源代码]#
将顶点数组渲染到当前活动的帧缓冲区。
- render_indirect(buffer: arcade.gl.buffer.Buffer, mode: ctypes.c_uint, count, first, stride)[源代码]#
使用间接渲染将顶点数组渲染到帧缓冲区。
警告
这需要OpenGL 4.3
- transform_interleaved(buffer: arcade.gl.buffer.Buffer, mode: ctypes.c_uint, output_mode: ctypes.c_uint, first: int = 0, vertices: int = 0, instances: int = 1, buffer_offset=0)[源代码]#
运行转换反馈。
- transform_separate(buffers: List[arcade.gl.buffer.Buffer], mode: ctypes.c_uint, output_mode: ctypes.c_uint, first: int = 0, vertices: int = 0, instances: int = 1, buffer_offset=0)[源代码]#
- glo#