RenderingDevice¶
继承: Object
使用现代低级图形API的抽象。
描述¶
RenderingDevice是用于处理现代低级图形API(如Vulkan)的抽象。与RenderingServer(与i3D自己的渲染子系统一起工作)相比,RenderingDevice级别要低得多,并且允许更直接地使用底层图形API。RenderingDevice在i3D中用于为几个现代低级图形API提供支持,同时减少所需的代码重复量。RenderingDevice也可以在您自己的项目中用于执行RenderingServer或高级节点未公开的事情,例如使用计算着色器。
启动时,i3D创建一个全局RenderingDevice,可以使用RenderingServer.get_rendering_device()检索。这个全局RenderingDevice执行绘制到屏幕。
Local RenderingDevices:使用RenderingServer.create_local_rendering_device(),您可以创建“辅助”渲染设备以在单独的线程上执行绘图和GPU计算操作。
方法¶
void |
barrier(from: BitField[BarrierMask] = 32767, to: BitField[BarrierMask] = 32767) |
buffer_clear(buffer: RID, offset: int, size_bytes: int) |
|
buffer_copy(src_buffer: RID, dst_buffer: RID, src_offset: int, dst_offset: int, size: int) |
|
buffer_get_data(buffer: RID, offset_bytes: int = 0, size_bytes: int = 0) |
|
buffer_get_data_async(buffer: RID, callback: Callable, offset_bytes: int = 0, size_bytes: int = 0) |
|
buffer_get_device_address(buffer: RID) |
|
buffer_update(buffer: RID, offset: int, size_bytes: int, data: PackedByteArray) |
|
void |
capture_timestamp(name: String) |
void |
compute_list_add_barrier(compute_list: int) |
void |
compute_list_bind_compute_pipeline(compute_list: int, compute_pipeline: RID) |
void |
compute_list_bind_uniform_set(compute_list: int, uniform_set: RID, set_index: int) |
void |
compute_list_dispatch(compute_list: int, x_groups: int, y_groups: int, z_groups: int) |
void |
compute_list_dispatch_indirect(compute_list: int, buffer: RID, offset: int) |
void |
|
void |
compute_list_set_push_constant(compute_list: int, buffer: PackedByteArray, size_bytes: int) |
compute_pipeline_create(shader: RID, specialization_constants: Array[RDPipelineSpecializationConstant] = []) |
|
compute_pipeline_is_valid(compute_pipeline: RID) |
|
void |
draw_command_begin_label(name: String, color: Color) |
void |
|
void |
draw_command_insert_label(name: String, color: Color) |
draw_list_begin(framebuffer: RID, draw_flags: BitField[DrawFlags] = 0, clear_color_values: PackedColorArray = PackedColorArray(), clear_depth_value: float = 1.0, clear_stencil_value: int = 0, region: Rect2 = Rect2(0, 0, 0, 0), breadcrumb: int = 0) |
|
draw_list_begin_for_screen(screen: int = 0, clear_color: Color = Color(0, 0, 0, 1)) |
|
draw_list_begin_split(framebuffer: RID, splits: int, initial_color_action: InitialAction, final_color_action: FinalAction, initial_depth_action: InitialAction, final_depth_action: FinalAction, clear_color_values: PackedColorArray = PackedColorArray(), clear_depth: float = 1.0, clear_stencil: int = 0, region: Rect2 = Rect2(0, 0, 0, 0), storage_textures: Array[RID] = []) |
|
void |
draw_list_bind_index_array(draw_list: int, index_array: RID) |
void |
draw_list_bind_render_pipeline(draw_list: int, render_pipeline: RID) |
void |
draw_list_bind_uniform_set(draw_list: int, uniform_set: RID, set_index: int) |
void |
draw_list_bind_vertex_array(draw_list: int, vertex_array: RID) |
void |
draw_list_disable_scissor(draw_list: int) |
void |
draw_list_draw(draw_list: int, use_indices: bool, instances: int, procedural_vertex_count: int = 0) |
void |
draw_list_draw_indirect(draw_list: int, use_indices: bool, buffer: RID, offset: int = 0, draw_count: int = 1, stride: int = 0) |
void |
draw_list_enable_scissor(draw_list: int, rect: Rect2 = Rect2(0, 0, 0, 0)) |
void |
|
void |
draw_list_set_blend_constants(draw_list: int, color: Color) |
void |
draw_list_set_push_constant(draw_list: int, buffer: PackedByteArray, size_bytes: int) |
draw_list_switch_to_next_pass_split(splits: int) |
|
framebuffer_create(textures: Array[RID], validate_with_format: int = -1, view_count: int = 1) |
|
framebuffer_create_empty(size: Vector2i, samples: TextureSamples = 0, validate_with_format: int = -1) |
|
framebuffer_create_multipass(textures: Array[RID], passes: Array[RDFramebufferPass], validate_with_format: int = -1, view_count: int = 1) |
|
framebuffer_format_create(attachments: Array[RDAttachmentFormat], view_count: int = 1) |
|
framebuffer_format_create_empty(samples: TextureSamples = 0) |
|
framebuffer_format_create_multipass(attachments: Array[RDAttachmentFormat], passes: Array[RDFramebufferPass], view_count: int = 1) |
|
framebuffer_format_get_texture_samples(format: int, render_pass: int = 0) |
|
framebuffer_get_format(framebuffer: RID) |
|
framebuffer_is_valid(framebuffer: RID) const |
|
void |
|
void |
|
get_captured_timestamp_cpu_time(index: int) const |
|
get_captured_timestamp_gpu_time(index: int) const |
|
get_captured_timestamp_name(index: int) const |
|
get_captured_timestamps_count() const |
|
get_captured_timestamps_frame() const |
|
get_device_allocation_count() const |
|
get_device_allocs_by_object_type(type: int) const |
|
get_device_memory_by_object_type(type: int) const |
|
get_device_name() const |
|
get_device_pipeline_cache_uuid() const |
|
get_device_total_memory() const |
|
get_device_vendor_name() const |
|
get_driver_allocation_count() const |
|
get_driver_allocs_by_object_type(type: int) const |
|
get_driver_memory_by_object_type(type: int) const |
|
get_driver_resource(resource: DriverResource, rid: RID, index: int) |
|
get_driver_total_memory() const |
|
get_frame_delay() const |
|
get_memory_usage(type: MemoryType) const |
|
get_perf_report() const |
|
get_tracked_object_name(type_index: int) const |
|
get_tracked_object_type_count() const |
|
has_feature(feature: Features) const |
|
index_array_create(index_buffer: RID, index_offset: int, index_count: int) |
|
index_buffer_create(size_indices: int, format: IndexBufferFormat, data: PackedByteArray = PackedByteArray(), use_restart_indices: bool = false, creation_bits: BitField[BufferCreationBits] = 0) |
|
render_pipeline_create(shader: RID, framebuffer_format: int, vertex_format: int, primitive: RenderPrimitive, rasterization_state: RDPipelineRasterizationState, multisample_state: RDPipelineMultisampleState, stencil_state: RDPipelineDepthStencilState, color_blend_state: RDPipelineColorBlendState, dynamic_state_flags: BitField[PipelineDynamicStateFlags] = 0, for_render_pass: int = 0, specialization_constants: Array[RDPipelineSpecializationConstant] = []) |
|
render_pipeline_is_valid(render_pipeline: RID) |
|
sampler_create(state: RDSamplerState) |
|
sampler_is_format_supported_for_filter(format: DataFormat, sampler_filter: SamplerFilter) const |
|
screen_get_framebuffer_format(screen: int = 0) const |
|
screen_get_height(screen: int = 0) const |
|
screen_get_width(screen: int = 0) const |
|
void |
set_resource_name(id: RID, name: String) |
shader_compile_binary_from_spirv(spirv_data: RDShaderSPIRV, name: String = "") |
|
shader_compile_spirv_from_source(shader_source: RDShaderSource, allow_cache: bool = true) |
|
shader_create_from_bytecode(binary_data: PackedByteArray, placeholder_rid: RID = RID()) |
|
shader_create_from_spirv(spirv_data: RDShaderSPIRV, name: String = "") |
|
storage_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), usage: BitField[StorageBufferUsage] = 0, creation_bits: BitField[BufferCreationBits] = 0) |
|
void |
submit() |
void |
sync() |
texture_buffer_create(size_bytes: int, format: DataFormat, data: PackedByteArray = PackedByteArray()) |
|
texture_clear(texture: RID, color: Color, base_mipmap: int, mipmap_count: int, base_layer: int, layer_count: int) |
|
texture_copy(from_texture: RID, to_texture: RID, from_pos: Vector3, to_pos: Vector3, size: Vector3, src_mipmap: int, dst_mipmap: int, src_layer: int, dst_layer: int) |
|
texture_create(format: RDTextureFormat, view: RDTextureView, data: Array[PackedByteArray] = []) |
|
texture_create_from_extension(type: TextureType, format: DataFormat, samples: TextureSamples, usage_flags: BitField[TextureUsageBits], image: int, width: int, height: int, depth: int, layers: int) |
|
texture_create_shared(view: RDTextureView, with_texture: RID) |
|
texture_create_shared_from_slice(view: RDTextureView, with_texture: RID, layer: int, mipmap: int, mipmaps: int = 1, slice_type: TextureSliceType = 0) |
|
texture_get_data(texture: RID, layer: int) |
|
texture_get_data_async(texture: RID, layer: int, callback: Callable) |
|
texture_get_format(texture: RID) |
|
texture_get_native_handle(texture: RID) |
|
texture_is_discardable(texture: RID) |
|
texture_is_format_supported_for_usage(format: DataFormat, usage_flags: BitField[TextureUsageBits]) const |
|
texture_is_shared(texture: RID) |
|
texture_is_valid(texture: RID) |
|
texture_resolve_multisample(from_texture: RID, to_texture: RID) |
|
void |
texture_set_discardable(texture: RID, discardable: bool) |
texture_update(texture: RID, layer: int, data: PackedByteArray) |
|
uniform_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), creation_bits: BitField[BufferCreationBits] = 0) |
|
uniform_set_create(uniforms: Array[RDUniform], shader: RID, shader_set: int) |
|
uniform_set_is_valid(uniform_set: RID) |
|
vertex_array_create(vertex_count: int, vertex_format: int, src_buffers: Array[RID], offsets: PackedInt64Array = PackedInt64Array()) |
|
vertex_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), creation_bits: BitField[BufferCreationBits] = 0) |
|
vertex_format_create(vertex_descriptions: Array[RDVertexAttribute]) |
枚举¶
enum DeviceType: 🔗
DeviceType DEVICE_TYPE_OTHER = 0
呈现设备类型与任何其他枚举值不匹配或未知。
DeviceType DEVICE_TYPE_INTEGRATED_GPU = 1
渲染设备是集成GPU,通常(但不总是)比专用GPU(DEVICE_TYPE_DISCRETE_GPU)慢。在Android和iOS上,渲染设备类型总是被认为是DEVICE_TYPE_INTEGRATED_GPU。
DeviceType DEVICE_TYPE_DISCRETE_GPU = 2
渲染设备是专用GPU,通常比集成GPU(DEVICE_TYPE_INTEGRATED_GPU)快(但不总是)。
DeviceType DEVICE_TYPE_VIRTUAL_GPU = 3
渲染设备是虚拟环境中的仿真GPU。这通常比主机GPU慢得多,这意味着专用GPU上的预期性能水平将大致相当于DEVICE_TYPE_INTEGRATED_GPU。虚拟机GPU直通(如VFIO)不会将设备类型报告为DEVICE_TYPE_VIRTUAL_GPU。相反,主机GPU的设备类型将被报告为GPU未被仿真。
DeviceType DEVICE_TYPE_CPU = 4
渲染设备由软件仿真提供(例如Lavapipe或SwiftShader)。这是可用的最慢的渲染设备;它通常比DEVICE_TYPE_INTEGRATED_GPU慢得多。
DeviceType DEVICE_TYPE_MAX = 5
表示DeviceType枚举的大小。
enum DriverResource: 🔗
DriverResource DRIVER_RESOURCE_LOGICAL_DEVICE = 0
基于物理设备的特定设备对象。
-Vulkan:Vulkan设备驱动程序资源(VkDevice)。(rid参数不适用。)
DriverResource DRIVER_RESOURCE_PHYSICAL_DEVICE = 1
特定逻辑设备所基于的物理设备。
-Vulkan:VkDevice。(rid参数不适用。)
DriverResource DRIVER_RESOURCE_TOPMOST_OBJECT = 2
最顶部的图形API条目对象。
-Vulkan:VkInstance。(rid参数不适用。)
DriverResource DRIVER_RESOURCE_COMMAND_QUEUE = 3
主图形计算命令队列。
-Vulkan:VkQueue。(rid参数不适用。)
DriverResource DRIVER_RESOURCE_QUEUE_FAMILY = 4
主队列所属的特定家族。
-Vulkan:队列族索引,一个uint32_t。(rid参数不适用。)
DriverResource DRIVER_RESOURCE_TEXTURE = 5
-Vulkan:VkImage。
DriverResource DRIVER_RESOURCE_TEXTURE_VIEW = 6
拥有或共享纹理的视图。
-Vulkan:VkImageView。
DriverResource DRIVER_RESOURCE_TEXTURE_DATA_FORMAT = 7
纹理数据格式的本机ID。
-Vulkan:VkFormat。
DriverResource DRIVER_RESOURCE_SAMPLER = 8
-Vulkan:VkSample。
DriverResource DRIVER_RESOURCE_UNIFORM_SET = 9
-Vulkan:VkDescriptorSet。
DriverResource DRIVER_RESOURCE_BUFFER = 10
任何类型的缓冲区(存储、顶点等)。
-Vulkan:VkBuffer。
DriverResource DRIVER_RESOURCE_COMPUTE_PIPELINE = 11
-Vulkan:VkPipeline。
DriverResource DRIVER_RESOURCE_RENDER_PIPELINE = 12
-Vulkan:VkPipeline。
DriverResource DRIVER_RESOURCE_VULKAN_DEVICE = 0
已弃用: 请改用 DRIVER_RESOURCE_LOGICAL_DEVICE。
DriverResource DRIVER_RESOURCE_VULKAN_PHYSICAL_DEVICE = 1
已弃用: 请改用 DRIVER_RESOURCE_PHYSICAL_DEVICE。
DriverResource DRIVER_RESOURCE_VULKAN_INSTANCE = 2
已弃用: 请改用 DRIVER_RESOURCE_TOPMOST_OBJECT。
DriverResource DRIVER_RESOURCE_VULKAN_QUEUE = 3
已弃用: 请改用 DRIVER_RESOURCE_COMMAND_QUEUE。
DriverResource DRIVER_RESOURCE_VULKAN_QUEUE_FAMILY_INDEX = 4
已弃用: 请改用 DRIVER_RESOURCE_QUEUE_FAMILY。
DriverResource DRIVER_RESOURCE_VULKAN_IMAGE = 5
已弃用: 请改用 DRIVER_RESOURCE_TEXTURE。
DriverResource DRIVER_RESOURCE_VULKAN_IMAGE_VIEW = 6
已弃用: 请改用 DRIVER_RESOURCE_TEXTURE_VIEW。
DriverResource DRIVER_RESOURCE_VULKAN_IMAGE_NATIVE_TEXTURE_FORMAT = 7
已弃用: 请改用 DRIVER_RESOURCE_TEXTURE_DATA_FORMAT。
DriverResource DRIVER_RESOURCE_VULKAN_SAMPLER = 8
已弃用: 请改用 DRIVER_RESOURCE_SAMPLER。
DriverResource DRIVER_RESOURCE_VULKAN_DESCRIPTOR_SET = 9
已弃用: 请改用 DRIVER_RESOURCE_UNIFORM_SET。
DriverResource DRIVER_RESOURCE_VULKAN_BUFFER = 10
已弃用: 请改用 DRIVER_RESOURCE_BUFFER。
DriverResource DRIVER_RESOURCE_VULKAN_COMPUTE_PIPELINE = 11
已弃用: 请改用 DRIVER_RESOURCE_COMPUTE_PIPELINE。
DriverResource DRIVER_RESOURCE_VULKAN_RENDER_PIPELINE = 12
已弃用: 请改用 DRIVER_RESOURCE_RENDER_PIPELINE。
enum DataFormat: 🔗
DataFormat DATA_FORMAT_R4G4_UNORM_PACK8 = 0
每通道4位红色/绿色通道数据格式,打包成8位。值在[0.0,1.0]范围内。
注:关于所有数据格式的更多信息可以在Vulkan规范的格式标识部分以及VkFormat枚举中找到。
DataFormat DATA_FORMAT_R4G4B4A4_UNORM_PACK16 = 1
每通道4位红色/绿色/蓝色/alpha通道数据格式,打包成16位。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_B4G4R4A4_UNORM_PACK16 = 2
每通道4位蓝色/绿色/红色/alpha通道数据格式,打包成16位。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R5G6B5_UNORM_PACK16 = 3
红/绿/蓝通道数据格式,5位红色、6位绿色和5位蓝色,打包成16位。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_B5G6R5_UNORM_PACK16 = 4
蓝色/绿色/红色通道数据格式,5位蓝色、6位绿色和5位红色,打包成16位。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R5G5B5A1_UNORM_PACK16 = 5
红色/绿色/蓝色/alpha通道数据格式,具有5位红色、6位绿色、5位蓝色和1位alpha,打包成16位。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_B5G5R5A1_UNORM_PACK16 = 6
蓝色/绿色/红色/alpha通道数据格式,具有5位蓝色、6位绿色、5位红色和1位alpha,打包成16位。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_A1R5G5B5_UNORM_PACK16 = 7
Alpha/red/green/Blue通道数据格式,具有1位alpha、5位red、6位green和5位Blue,打包成16位。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R8_UNORM = 8
具有归一化值的每通道8位无符号浮点红色通道数据格式。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R8_SNORM = 9
具有归一化值的每通道8位有符号浮点红色通道数据格式。值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_R8_USCALED = 10
每通道8位无符号浮点红色通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[0.0,255.0]范围内。
DataFormat DATA_FORMAT_R8_SSCALED = 11
具有缩放值的每通道8位有符号浮点红色通道数据格式(值从整数转换为浮点数)。值在[-127.0,127.0]范围内。
DataFormat DATA_FORMAT_R8_UINT = 12
每通道8位无符号整数红色通道数据格式。值在[0,255]范围内。
DataFormat DATA_FORMAT_R8_SINT = 13
每通道8位有符号整数红色通道数据格式。值在[-127,127]范围内。
DataFormat DATA_FORMAT_R8_SRGB = 14
每通道8位无符号浮点红色通道数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R8G8_UNORM = 15
每通道8位无符号浮点红色/绿色通道数据格式,具有归一化值。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R8G8_SNORM = 16
具有归一化值的每通道8位有符号浮点红/绿通道数据格式。值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_R8G8_USCALED = 17
每通道8位无符号浮点红色/绿色通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[0.0,255.0]范围内。
DataFormat DATA_FORMAT_R8G8_SSCALED = 18
每通道8位有符号浮点红/绿通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[-127.0,127.0]范围内。
DataFormat DATA_FORMAT_R8G8_UINT = 19
每通道8位无符号整数红色/绿色通道数据格式。值在[0,255]范围内。
DataFormat DATA_FORMAT_R8G8_SINT = 20
每通道8位有符号整数红色/绿色通道数据格式。值在[-127,127]范围内。
DataFormat DATA_FORMAT_R8G8_SRGB = 21
每通道8位无符号浮点红/绿通道数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R8G8B8_UNORM = 22
每通道8位无符号浮点红/绿/蓝通道数据格式,具有归一化值。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R8G8B8_SNORM = 23
具有归一化值的每通道8位有符号浮点红/绿/蓝通道数据格式。值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_R8G8B8_USCALED = 24
每通道8位无符号浮点红/绿/蓝通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[0.0,255.0]范围内。
DataFormat DATA_FORMAT_R8G8B8_SSCALED = 25
每通道8位有符号浮点红/绿/蓝通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[-127.0,127.0]范围内。
DataFormat DATA_FORMAT_R8G8B8_UINT = 26
每通道8位无符号整数红色/绿色/蓝色通道数据格式。值在[0,255]范围内。
DataFormat DATA_FORMAT_R8G8B8_SINT = 27
每通道8位有符号整数红色/绿色/蓝色通道数据格式。值在[-127,127]范围内。
DataFormat DATA_FORMAT_R8G8B8_SRGB = 28
每通道8位无符号浮点红/绿/蓝/蓝通道数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_B8G8R8_UNORM = 29
每通道8位无符号浮点蓝/绿/红通道数据格式,具有归一化值。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_B8G8R8_SNORM = 30
具有归一化值的每通道8位有符号浮点蓝/绿/红通道数据格式。值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_B8G8R8_USCALED = 31
每通道8位无符号浮点蓝/绿/红通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[0.0,255.0]范围内。
DataFormat DATA_FORMAT_B8G8R8_SSCALED = 32
每通道8位有符号浮点蓝/绿/红通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[-127.0,127.0]范围内。
DataFormat DATA_FORMAT_B8G8R8_UINT = 33
每通道8位无符号整数蓝色/绿色/红色通道数据格式。值在[0,255]范围内。
DataFormat DATA_FORMAT_B8G8R8_SINT = 34
每通道8位有符号整数蓝色/绿色/红色通道数据格式。值在[-127,127]范围内。
DataFormat DATA_FORMAT_B8G8R8_SRGB = 35
每通道8位无符号浮点蓝/绿/红数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R8G8B8A8_UNORM = 36
每通道8位无符号浮点红/绿/蓝/alpha通道数据格式,具有归一化值。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R8G8B8A8_SNORM = 37
每通道8位有符号浮点红/绿/蓝/alpha通道数据格式,具有归一化值。值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_R8G8B8A8_USCALED = 38
每通道8位无符号浮点红/绿/蓝/alpha通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[0.0,255.0]范围内。
DataFormat DATA_FORMAT_R8G8B8A8_SSCALED = 39
每通道8位有符号浮点红/绿/蓝/alpha通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[-127.0,127.0]范围内。
DataFormat DATA_FORMAT_R8G8B8A8_UINT = 40
每通道8位无符号整数红色/绿色/蓝色/alpha通道数据格式。值在[0,255]范围内。
DataFormat DATA_FORMAT_R8G8B8A8_SINT = 41
每通道8位有符号整数红色/绿色/蓝色/alpha通道数据格式。值在[-127,127]范围内。
DataFormat DATA_FORMAT_R8G8B8A8_SRGB = 42
每通道8位无符号浮点红/绿/蓝/alpha通道数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_B8G8R8A8_UNORM = 43
每通道8位无符号浮点蓝/绿/红/alpha通道数据格式,具有归一化值。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_B8G8R8A8_SNORM = 44
每通道8位有符号浮点蓝/绿/红/alpha通道数据格式,具有归一化值。值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_B8G8R8A8_USCALED = 45
每通道8位无符号浮点蓝/绿/红/alpha通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[0.0,255.0]范围内。
DataFormat DATA_FORMAT_B8G8R8A8_SSCALED = 46
每通道8位有符号浮点蓝/绿/红/alpha通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[-127.0,127.0]范围内。
DataFormat DATA_FORMAT_B8G8R8A8_UINT = 47
每通道8位无符号整数蓝色/绿色/红色/alpha通道数据格式。值在[0,255]范围内。
DataFormat DATA_FORMAT_B8G8R8A8_SINT = 48
每通道8位有符号整数蓝色/绿色/红色/alpha通道数据格式。值在[-127,127]范围内。
DataFormat DATA_FORMAT_B8G8R8A8_SRGB = 49
每通道8位无符号浮点蓝/绿/红/alpha通道数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_A8B8G8R8_UNORM_PACK32 = 50
每通道8位无符号浮点Alpha/红/绿/蓝通道数据格式,具有归一化值,以32位打包。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_A8B8G8R8_SNORM_PACK32 = 51
每通道8位有符号浮点Alpha/红/绿/蓝通道数据格式,具有归一化值,以32位打包。值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_A8B8G8R8_USCALED_PACK32 = 52
每通道8位无符号浮点Alpha/red/green/Blue通道数据格式,具有缩放值(值从整数转换为浮点数),以32位打包。值在[0.0,255.0]范围内。
DataFormat DATA_FORMAT_A8B8G8R8_SSCALED_PACK32 = 53
每通道8位有符号浮点Alpha/red/green/Blue通道数据格式,具有缩放值(值从整数转换为浮点数),以32位打包。值在[-127.0,127.0]范围内。
DataFormat DATA_FORMAT_A8B8G8R8_UINT_PACK32 = 54
每通道8位无符号整数Alpha/red/green/Blue通道数据格式,以32位打包。值在[0,255]范围内。
DataFormat DATA_FORMAT_A8B8G8R8_SINT_PACK32 = 55
每通道8位有符号整数Alpha/red/green/Blue通道数据格式,以32位打包。值在[-127,127]范围内。
DataFormat DATA_FORMAT_A8B8G8R8_SRGB_PACK32 = 56
每通道8位无符号浮点Alpha/red/green/Blue通道数据格式,具有归一化值和非线性sRGB编码,以32位打包。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_A2R10G10B10_UNORM_PACK32 = 57
无符号浮点alpha/red/green/Blue通道数据格式,具有归一化值,以32位打包。格式包含2位alpha、10位red、10位green和10位Blue。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_A2R10G10B10_SNORM_PACK32 = 58
具有归一化值的签名浮点alpha/red/green/Blue通道数据格式,以32位打包。格式包含2位alpha、10位red、10位green和10位Blue。值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_A2R10G10B10_USCALED_PACK32 = 59
具有归一化值的无符号浮点alpha/red/green/Blue通道数据格式,以32位打包。格式包含2位alpha、10位red、10位green和10位Blue。红色/绿色/蓝色的值在[0.0,1023.0]范围内,alpha的值在[0.0,3.0]范围内。
DataFormat DATA_FORMAT_A2R10G10B10_SSCALED_PACK32 = 60
具有归一化值的签名浮点alpha/red/green/Blue通道数据格式,以32位打包。格式包含2位alpha、10位red、10位green和10位Blue。红色/绿色/蓝色的值在[-511.0,511.0]范围内,Alpha的值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_A2R10G10B10_UINT_PACK32 = 61
具有归一化值的无符号整数Alpha/red/green/Blue通道数据格式,以32位打包。格式包含2位Alpha、10位红色、10位绿色和10位蓝色。红色/绿色/蓝色的值在[0,1023]范围内,Alpha的值在[0,3]范围内。
DataFormat DATA_FORMAT_A2R10G10B10_SINT_PACK32 = 62
带归一化值的符号整数Alpha/red/green/Blue通道数据格式,以32位打包。格式包含2位Alpha、10位红色、10位绿色和10位蓝色。红色/绿色/蓝色的值在[-511,511]范围内,Alpha的值在[-1,1]范围内。
DataFormat DATA_FORMAT_A2B10G10R10_UNORM_PACK32 = 63
无符号浮点alpha/blue/green/red通道数据格式,具有归一化值,以32位打包。格式包含2位alpha、10位蓝色、10位绿色和10位红色。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_A2B10G10R10_SNORM_PACK32 = 64
具有归一化值的签名浮点alpha/蓝色/绿色/红色通道数据格式,以32位打包。格式包含2位alpha、10位蓝色、10位绿色和10位红色。值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_A2B10G10R10_USCALED_PACK32 = 65
无符号浮点alpha/蓝色/绿色/红色通道数据格式,具有归一化值,以32位打包。格式包含2位alpha、10位蓝色、10位绿色和10位红色。蓝色/绿色/红色的值在[0.0,1023.0]范围内,alpha的值在[0.0,3.0]范围内。
DataFormat DATA_FORMAT_A2B10G10R10_SSCALED_PACK32 = 66
具有归一化值的签名浮点alpha/蓝色/绿色/红色通道数据格式,以32位打包。格式包含2位alpha、10位蓝色、10位绿色和10位红色。蓝色/绿色/红色的值在[-511.0,511.0]范围内,alpha的值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_A2B10G10R10_UINT_PACK32 = 67
无符号整数alpha/蓝色/绿色/红色通道数据格式,具有归一化值,以32位打包。格式包含2位alpha、10位蓝色、10位绿色和10位红色。蓝色/绿色/红色的值在[0,1023]范围内,Alpha的值在[0,3]范围内。
DataFormat DATA_FORMAT_A2B10G10R10_SINT_PACK32 = 68
带归一化值的符号整数Alpha/蓝色/绿色/红色通道数据格式,以32位打包。格式包含2位Alpha、10位蓝色、10位绿色和10位红色。蓝色/绿色/红色的值在[-511,511]范围内,Alpha的值在[-1,1]范围内。
DataFormat DATA_FORMAT_R16_UNORM = 69
具有归一化值的每通道16位无符号浮点红色通道数据格式。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R16_SNORM = 70
具有归一化值的每通道16位有符号浮点红色通道数据格式。值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_R16_USCALED = 71
每通道16位无符号浮点红色通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[0.0,65535.0]范围内。
DataFormat DATA_FORMAT_R16_SSCALED = 72
每通道16位有符号浮点红色通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[-32767.0,32767.0]范围内。
DataFormat DATA_FORMAT_R16_UINT = 73
每通道16位无符号整数红色通道数据格式。值在[0.0,65535]范围内。
DataFormat DATA_FORMAT_R16_SINT = 74
每通道16位有符号整数红色通道数据格式。值在[-32767,32767]范围内。
DataFormat DATA_FORMAT_R16_SFLOAT = 75
每通道16位有符号浮点红色通道数据格式,值按原样存储。
DataFormat DATA_FORMAT_R16G16_UNORM = 76
每通道16位无符号浮点红色/绿色通道数据格式,具有归一化值。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R16G16_SNORM = 77
具有归一化值的每通道16位有符号浮点红/绿通道数据格式。值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_R16G16_USCALED = 78
每通道16位无符号浮点红色/绿色通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[0.0,65535.0]范围内。
DataFormat DATA_FORMAT_R16G16_SSCALED = 79
每通道16位有符号浮点红色/绿色通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[-32767.0,32767.0]范围内。
DataFormat DATA_FORMAT_R16G16_UINT = 80
每通道16位无符号整数红色/绿色通道数据格式。值在[0.0,65535]范围内。
DataFormat DATA_FORMAT_R16G16_SINT = 81
每通道16位有符号整数红色/绿色通道数据格式。值在[-32767,32767]范围内。
DataFormat DATA_FORMAT_R16G16_SFLOAT = 82
每通道16位有符号浮点红/绿通道数据格式,值按原样存储。
DataFormat DATA_FORMAT_R16G16B16_UNORM = 83
每通道16位无符号浮点红/绿/蓝通道数据格式,具有归一化值。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R16G16B16_SNORM = 84
每通道16位有符号浮点红/绿/蓝通道数据格式,具有归一化值。值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_R16G16B16_USCALED = 85
每通道16位无符号浮点红/绿/蓝通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[0.0,65535.0]范围内。
DataFormat DATA_FORMAT_R16G16B16_SSCALED = 86
每通道16位有符号浮点红/绿/蓝通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[-32767.0,32767.0]范围内。
DataFormat DATA_FORMAT_R16G16B16_UINT = 87
每通道16位无符号整数红色/绿色/蓝色通道数据格式。值在[0.0,65535]范围内。
DataFormat DATA_FORMAT_R16G16B16_SINT = 88
每通道16位有符号整数红色/绿色/蓝色通道数据格式。值在[-32767,32767]范围内。
DataFormat DATA_FORMAT_R16G16B16_SFLOAT = 89
每通道16位有符号浮点红/绿/蓝通道数据格式,值按原样存储。
DataFormat DATA_FORMAT_R16G16B16A16_UNORM = 90
每通道16位无符号浮点红/绿/蓝/alpha通道数据格式,具有归一化值。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R16G16B16A16_SNORM = 91
每通道16位有符号浮点红/绿/蓝/alpha通道数据格式,具有归一化值。值在[-1.0,1.0]范围内。
DataFormat DATA_FORMAT_R16G16B16A16_USCALED = 92
每通道16位无符号浮点红/绿/蓝/alpha通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[0.0,65535.0]范围内。
DataFormat DATA_FORMAT_R16G16B16A16_SSCALED = 93
每通道16位有符号浮点红/绿/蓝/alpha通道数据格式,具有缩放值(值从整数转换为浮点数)。值在[-32767.0,32767.0]范围内。
DataFormat DATA_FORMAT_R16G16B16A16_UINT = 94
每通道16位无符号整数红色/绿色/蓝色/alpha通道数据格式。值在[0.0,65535]范围内。
DataFormat DATA_FORMAT_R16G16B16A16_SINT = 95
每通道16位有符号整数红色/绿色/蓝色/alpha通道数据格式。值在[-32767,32767]范围内。
DataFormat DATA_FORMAT_R16G16B16A16_SFLOAT = 96
每通道16位有符号浮点红/绿/蓝/alpha通道数据格式,值按原样存储。
DataFormat DATA_FORMAT_R32_UINT = 97
每通道32位无符号整数红色通道数据格式。值在[0,2^32-1]范围内。
DataFormat DATA_FORMAT_R32_SINT = 98
每通道32位有符号整数红色通道数据格式。值在[2^31+1,2^31-1]范围内。
DataFormat DATA_FORMAT_R32_SFLOAT = 99
每通道32位有符号浮点红色通道数据格式,值按原样存储。
DataFormat DATA_FORMAT_R32G32_UINT = 100
每通道32位无符号整数红色/绿色通道数据格式。值在[0,2^32-1]范围内。
DataFormat DATA_FORMAT_R32G32_SINT = 101
每通道32位有符号整数红色/绿色通道数据格式。值在[2^31+1,2^31-1]范围内。
DataFormat DATA_FORMAT_R32G32_SFLOAT = 102
每通道32位有符号浮点红/绿通道数据格式,值按原样存储。
DataFormat DATA_FORMAT_R32G32B32_UINT = 103
每通道32位无符号整数红色/绿色/蓝色通道数据格式。值在[0,2^32-1]范围内。
DataFormat DATA_FORMAT_R32G32B32_SINT = 104
每通道32位有符号整数红色/绿色/蓝色通道数据格式。值在[2^31+1,2^31-1]范围内。
DataFormat DATA_FORMAT_R32G32B32_SFLOAT = 105
每通道32位有符号浮点红/绿/蓝通道数据格式,值按原样存储。
DataFormat DATA_FORMAT_R32G32B32A32_UINT = 106
每通道32位无符号整数红色/绿色/蓝色/alpha通道数据格式。值在[0,2^32-1]范围内。
DataFormat DATA_FORMAT_R32G32B32A32_SINT = 107
每通道32位有符号整数红色/绿色/蓝色/alpha通道数据格式。值在[2^31+1,2^31-1]范围内。
DataFormat DATA_FORMAT_R32G32B32A32_SFLOAT = 108
每通道32位有符号浮点红/绿/蓝/alpha通道数据格式,值按原样存储。
DataFormat DATA_FORMAT_R64_UINT = 109
每通道64位无符号整数红色通道数据格式。值在[0,2^64-1]范围内。
DataFormat DATA_FORMAT_R64_SINT = 110
每通道64位有符号整数红色通道数据格式。值在[2^63+1,2^63-1]范围内。
DataFormat DATA_FORMAT_R64_SFLOAT = 111
每通道64位有符号浮点红色通道数据格式,值按原样存储。
DataFormat DATA_FORMAT_R64G64_UINT = 112
每通道64位无符号整数红色/绿色通道数据格式。值在[0,2^64-1]范围内。
DataFormat DATA_FORMAT_R64G64_SINT = 113
每通道64位有符号整数红色/绿色通道数据格式。值在[2^63+1,2^63-1]范围内。
DataFormat DATA_FORMAT_R64G64_SFLOAT = 114
每通道64位有符号浮点红/绿通道数据格式,值按原样存储。
DataFormat DATA_FORMAT_R64G64B64_UINT = 115
每通道64位无符号整数红色/绿色/蓝色通道数据格式。值在[0,2^64-1]范围内。
DataFormat DATA_FORMAT_R64G64B64_SINT = 116
每通道64位有符号整数红色/绿色/蓝色通道数据格式。值在[2^63+1,2^63-1]范围内。
DataFormat DATA_FORMAT_R64G64B64_SFLOAT = 117
每通道64位有符号浮点红/绿/蓝通道数据格式,值按原样存储。
DataFormat DATA_FORMAT_R64G64B64A64_UINT = 118
每通道64位无符号整数红色/绿色/蓝色/alpha通道数据格式。值在[0,2^64-1]范围内。
DataFormat DATA_FORMAT_R64G64B64A64_SINT = 119
每通道64位有符号整数红色/绿色/蓝色/alpha通道数据格式。值在[2^63+1,2^63-1]范围内。
DataFormat DATA_FORMAT_R64G64B64A64_SFLOAT = 120
每通道64位有符号浮点红/绿/蓝/alpha通道数据格式,值按原样存储。
DataFormat DATA_FORMAT_B10G11R11_UFLOAT_PACK32 = 121
无符号浮点蓝/绿/红数据格式,值按原样存储,打包为32位。格式的精度为10位蓝色通道、11位绿色通道和11位红色通道。
DataFormat DATA_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 122
无符号浮点曝光/蓝/绿/红数据格式,值按原样存储,打包为32位。格式的精度为5位曝光、9位蓝色通道、9位绿色通道和9位红色通道。
DataFormat DATA_FORMAT_D16_UNORM = 123
具有归一化值的16位无符号浮点深度数据格式。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_X8_D24_UNORM_PACK32 = 124
具有归一化值的24位无符号浮点深度数据格式,加上8个未使用的位,打包在32位中。深度值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_D32_SFLOAT = 125
32位有符号浮点深度数据格式,值按原样存储。
DataFormat DATA_FORMAT_S8_UINT = 126
8位无符号整数模板数据格式。
DataFormat DATA_FORMAT_D16_UNORM_S8_UINT = 127
具有归一化值的16位无符号浮点深度数据格式,加上8位无符号整数格式的模板。深度值在[0.0,1.0]范围内。模板的值在[0,255]范围内。
DataFormat DATA_FORMAT_D24_UNORM_S8_UINT = 128
具有归一化值的24位无符号浮点深度数据格式,加上8位无符号整数格式的模板。深度值在[0.0,1.0]范围内。模板的值在[0,255]范围内。
DataFormat DATA_FORMAT_D32_SFLOAT_S8_UINT = 129
32位有符号浮点深度数据格式,值按原样存储,加上8位无符号整数格式的模板。模板的值在[0,255]范围内。
DataFormat DATA_FORMAT_BC1_RGB_UNORM_BLOCK = 130
VRAM压缩的无符号红/绿/蓝通道数据格式,具有归一化值。值在[0.0,1.0]范围内。格式的精度为5位红色通道、6位绿色通道和5位蓝色通道。使用BC1纹理压缩(也称为S3TC DXT1)。
DataFormat DATA_FORMAT_BC1_RGB_SRGB_BLOCK = 131
VRAM压缩的无符号红/绿/蓝通道数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。格式的精度为5位红色通道、6位绿色通道和5位蓝色通道。使用BC1纹理压缩(也称为S3TC DXT1)。
DataFormat DATA_FORMAT_BC1_RGBA_UNORM_BLOCK = 132
VRAM压缩的无符号红/绿/蓝/alpha通道数据格式,具有归一化值。值在[0.0,1.0]范围内。格式的精度为5位红色通道、6位绿色通道、5位蓝色通道和1位alpha通道。使用BC1纹理压缩(也称为S3TC DXT1)。
DataFormat DATA_FORMAT_BC1_RGBA_SRGB_BLOCK = 133
VRAM压缩的无符号红/绿/蓝/alpha通道数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。格式的精度为5位红色通道、6位绿色通道、5位蓝色通道和1位alpha通道。使用BC1纹理压缩(也称为S3TC DXT1)。
DataFormat DATA_FORMAT_BC2_UNORM_BLOCK = 134
VRAM压缩的无符号红/绿/蓝/alpha通道数据格式,具有归一化值。值在[0.0,1.0]范围内。格式的精度为5位红色通道、6位绿色通道、5位蓝色通道和4位alpha通道。使用BC2纹理压缩(也称为S3TC DXT3)。
DataFormat DATA_FORMAT_BC2_SRGB_BLOCK = 135
VRAM压缩的无符号红/绿/蓝/alpha通道数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。格式的精度为5位红色通道、6位绿色通道、5位蓝色通道和4位alpha通道。使用BC2纹理压缩(也称为S3TC DXT3)。
DataFormat DATA_FORMAT_BC3_UNORM_BLOCK = 136
VRAM压缩的无符号红/绿/蓝/alpha通道数据格式,具有归一化值。值在[0.0,1.0]范围内。格式的精度为5位红色通道、6位绿色通道、5位蓝色通道和8位alpha通道。使用BC3纹理压缩(也称为S3TC DXT5)。
DataFormat DATA_FORMAT_BC3_SRGB_BLOCK = 137
VRAM压缩的无符号红/绿/蓝/alpha通道数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。格式的精度为5位红色通道、6位绿色通道、5位蓝色通道和8位alpha通道。使用BC3纹理压缩(也称为S3TC DXT5)。
DataFormat DATA_FORMAT_BC4_UNORM_BLOCK = 138
具有归一化值的VRAM压缩无符号红色通道数据格式。值在[0.0,1.0]范围内。格式的精度为8位红色通道。使用BC4纹理压缩。
DataFormat DATA_FORMAT_BC4_SNORM_BLOCK = 139
具有归一化值的VRAM压缩有符号红色通道数据格式。值在[-1.0,1.0]范围内。格式的精度为8位红色通道。使用BC4纹理压缩。
DataFormat DATA_FORMAT_BC5_UNORM_BLOCK = 140
VRAM压缩的无符号红/绿通道数据格式,具有归一化值。值在[0.0,1.0]范围内。格式的精度为8位红色通道和8位绿色通道。使用BC5纹理压缩(也称为S3TC RGTC)。
DataFormat DATA_FORMAT_BC5_SNORM_BLOCK = 141
具有归一化值的VRAM压缩有符号红/绿通道数据格式。值在[-1.0,1.0]范围内。格式的精度为8位红色通道和8位绿色通道。使用BC5纹理压缩(也称为S3TC RGTC)。
DataFormat DATA_FORMAT_BC6H_UFLOAT_BLOCK = 142
VRAM压缩的无符号红/绿/蓝通道数据格式,浮点值按原样存储。红/绿/蓝通道的格式精度在10到13位之间。使用BC6H纹理压缩(也称为BPTC HDR)。
DataFormat DATA_FORMAT_BC6H_SFLOAT_BLOCK = 143
VRAM压缩有符号的红/绿/蓝通道数据格式,浮点值按原样存储。红/绿/蓝通道的格式精度在10到13位之间。使用BC6H纹理压缩(也称为BPTC HDR)。
DataFormat DATA_FORMAT_BC7_UNORM_BLOCK = 144
VRAM压缩的无符号红/绿/蓝/alpha通道数据格式,具有归一化值。值在[0.0,1.0]范围内。格式的精度在红/绿/蓝通道的4位到7位之间,在alpha通道的0位到8位之间。也称为BPTC LDR。
DataFormat DATA_FORMAT_BC7_SRGB_BLOCK = 145
VRAM压缩的无符号红/绿/蓝/alpha通道数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。格式的精度在红/绿/蓝通道的4位到7位之间,在alpha通道的0位到8位之间。也称为BPTC LDR。
DataFormat DATA_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 146
VRAM压缩的无符号红/绿/蓝通道数据格式,具有归一化值。值在[0.0,1.0]范围内。使用ETC2纹理压缩。
DataFormat DATA_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 147
VRAM压缩的无符号红/绿/蓝通道数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。使用ETC2纹理压缩。
DataFormat DATA_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 148
VRAM压缩的无符号红色/绿色/蓝色/alpha通道数据格式,具有归一化值。值在[0.0,1.0]范围内。红色/绿色/蓝色各使用8位精度,alpha使用1位精度。使用ETC2纹理压缩。
DataFormat DATA_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 149
VRAM压缩的无符号红色/绿色/蓝色/alpha通道数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。红色/绿色/蓝色各使用8位精度,alpha使用1位精度。使用ETC2纹理压缩。
DataFormat DATA_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 150
VRAM压缩的无符号红色/绿色/蓝色/alpha通道数据格式,具有归一化值。值在[0.0,1.0]范围内。红色/绿色/蓝色各使用8位精度,alpha使用8位精度。使用ETC2纹理压缩。
DataFormat DATA_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 151
VRAM压缩的无符号红/绿/蓝/alpha通道数据格式,具有归一化值和非线性sRGB编码。值在[0.0,1.0]范围内。红/绿/蓝各使用8位精度,alpha使用8位精度。使用ETC2纹理压缩。
DataFormat DATA_FORMAT_EAC_R11_UNORM_BLOCK = 152
具有归一化值的11位VRAM压缩无符号红色通道数据格式。值在[0.0,1.0]范围内。使用ETC2纹理压缩。
DataFormat DATA_FORMAT_EAC_R11_SNORM_BLOCK = 153
具有归一化值的11位VRAM压缩有符号红色通道数据格式。值在[-1.0,1.0]范围内。使用ETC2纹理压缩。
DataFormat DATA_FORMAT_EAC_R11G11_UNORM_BLOCK = 154
11位VRAM压缩的无符号红色/绿色通道数据格式,具有归一化值。值在[0.0,1.0]范围内。使用ETC2纹理压缩。
DataFormat DATA_FORMAT_EAC_R11G11_SNORM_BLOCK = 155
具有归一化值的11位VRAM压缩有符号红/绿通道数据格式。值在[-1.0,1.0]范围内。使用ETC2纹理压缩。
DataFormat DATA_FORMAT_ASTC_4x4_UNORM_BLOCK = 156
具有归一化值的VRAM压缩无符号浮点数据格式,打包在4×4块中(最高质量)。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_4x4_SRGB_BLOCK = 157
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在4×4块中(最高质量)。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_5x4_UNORM_BLOCK = 158
具有归一化值的VRAM压缩无符号浮点数据格式,打包在5×4块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_5x4_SRGB_BLOCK = 159
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在5×4块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_5x5_UNORM_BLOCK = 160
具有归一化值的VRAM压缩无符号浮点数据格式,打包在5×5块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_5x5_SRGB_BLOCK = 161
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在5×5块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_6x5_UNORM_BLOCK = 162
具有归一化值的VRAM压缩无符号浮点数据格式,打包在6×5块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_6x5_SRGB_BLOCK = 163
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在6×5块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_6x6_UNORM_BLOCK = 164
具有归一化值的VRAM压缩无符号浮点数据格式,打包在6×6块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_6x6_SRGB_BLOCK = 165
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在6×6块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_8x5_UNORM_BLOCK = 166
具有归一化值的VRAM压缩无符号浮点数据格式,打包在8×5块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_8x5_SRGB_BLOCK = 167
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在8×5块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_8x6_UNORM_BLOCK = 168
具有归一化值的VRAM压缩无符号浮点数据格式,打包在8×6块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_8x6_SRGB_BLOCK = 169
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在8×6块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_8x8_UNORM_BLOCK = 170
具有归一化值的VRAM压缩无符号浮点数据格式,打包在8×8块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_8x8_SRGB_BLOCK = 171
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在8×8块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_10x5_UNORM_BLOCK = 172
具有归一化值的VRAM压缩无符号浮点数据格式,打包在10×5块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_10x5_SRGB_BLOCK = 173
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在10×5块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_10x6_UNORM_BLOCK = 174
具有归一化值的VRAM压缩无符号浮点数据格式,打包在10×6块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_10x6_SRGB_BLOCK = 175
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在10×6块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_10x8_UNORM_BLOCK = 176
具有归一化值的VRAM压缩无符号浮点数据格式,打包在10×8块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_10x8_SRGB_BLOCK = 177
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在10×8块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_10x10_UNORM_BLOCK = 178
具有归一化值的VRAM压缩无符号浮点数据格式,打包在10×10块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_10x10_SRGB_BLOCK = 179
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在10×10块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_12x10_UNORM_BLOCK = 180
具有归一化值的VRAM压缩无符号浮点数据格式,打包在12×10块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_12x10_SRGB_BLOCK = 181
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在12×10块中。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_12x12_UNORM_BLOCK = 182
具有归一化值的VRAM压缩无符号浮点数据格式,打包在12个块中(质量最低)。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_ASTC_12x12_SRGB_BLOCK = 183
VRAM压缩的无符号浮点数据格式,具有归一化值和非线性sRGB编码,打包在12个块中(质量最低)。值在[0.0,1.0]范围内。使用ASTC压缩。
DataFormat DATA_FORMAT_G8B8G8R8_422_UNORM = 184
每通道8位无符号浮点绿色/蓝色/红色通道数据格式,具有归一化值。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即两个水平相邻的像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_B8G8R8G8_422_UNORM = 185
每通道8位无符号浮点蓝色/绿色/红色通道数据格式,具有归一化值。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即2个水平相邻的像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 186
每通道8位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,存储在3个单独的平面(绿色+蓝色+红色)上。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平和垂直解析度减半存储(即2×2个相邻像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G8_B8R8_2PLANE_420_UNORM = 187
每通道8位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,存储在2个单独的平面(绿色+蓝色/红色)上。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平和垂直解析度减半存储(即2×2个相邻像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 188
每通道8位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,存储在2个单独的平面(绿色+蓝色+红色)上。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即两个水平相邻的像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G8_B8R8_2PLANE_422_UNORM = 189
每通道8位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,存储在2个单独的平面(绿色+蓝色/红色)上。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即两个水平相邻的像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 190
每通道8位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,存储在3个单独的平面上。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R10X6_UNORM_PACK16 = 191
具有归一化值的每通道10位无符号浮点红色通道数据,加上6个未使用的位,打包在16位中。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R10X6G10X6_UNORM_2PACK16 = 192
每通道10位无符号浮点红/绿通道数据,具有归一化值,每个通道后加上6个未使用的位,以2×16位打包。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 193
每通道10位无符号浮点红/绿/蓝/alpha通道数据,具有归一化值,每个通道后加上6个未使用的位,以4×16位打包。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 194
每通道10位无符号浮点绿色/蓝色/绿色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位,以4×16位打包。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即蓝色/红色通道的2个水平相邻像素将共享相同的值)。绿色通道列出两次,但包含不同的值以允许以全分辨率表示。
DataFormat DATA_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 195
每通道10位无符号浮点蓝色/绿色/红色/绿色通道数据,具有归一化值,每个通道后加上6个未使用的位,以4×16位打包。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即蓝色/红色通道的2个水平相邻像素将共享相同的值)。绿色通道列出两次,但包含不同的值以允许以全分辨率表示。
DataFormat DATA_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 196
每通道10位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。以3×16位打包并跨2个独立平面存储(绿色+蓝色+红色)。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平和垂直解析度减半存储(即2×2个相邻像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 197
每通道10位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。以3×16位打包并跨2个单独的平面存储(绿色+蓝色/红色)。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平和垂直解析度减半存储(即2×2个相邻像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 198
每通道10位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。以3×16位打包并跨3个独立平面存储(绿色+蓝色+红色)。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即2个水平相邻的像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 199
每通道10位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。以3×16位打包并跨3个独立平面存储(绿色+蓝色/红色)。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即2个水平相邻的像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 200
每通道10位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。以3×16位打包并存储在3个单独的平面(绿色+蓝色+红色)中。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R12X4_UNORM_PACK16 = 201
具有归一化值的每通道12位无符号浮点红色通道数据,加上6个未使用的位,打包在16位中。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R12X4G12X4_UNORM_2PACK16 = 202
每通道12位无符号浮点红/绿通道数据,具有归一化值,每个通道后加上6个未使用的位,以2×16位打包。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 203
每通道12位无符号浮点红/绿/蓝/alpha通道数据,具有归一化值,每个通道后加上6个未使用的位,以4×16位打包。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 204
每通道12位无符号浮点绿色/蓝色/绿色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位,以4×16位打包。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即蓝色/红色通道的2个水平相邻像素将共享相同的值)。绿色通道列出两次,但包含不同的值以允许以全分辨率表示。
DataFormat DATA_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 205
每通道12位无符号浮点蓝色/绿色/红色/绿色通道数据,具有归一化值,每个通道后加上6个未使用的位,以4×16位打包。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即蓝色/红色通道的2个水平相邻像素将共享相同的值)。绿色通道列出两次,但包含不同的值以允许以全分辨率表示。
DataFormat DATA_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 206
每通道12位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。以3×16位打包并跨2个独立平面存储(绿色+蓝色+红色)。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平和垂直解析度减半存储(即2×2个相邻像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 207
每通道12位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。以3×16位打包并跨2个单独的平面存储(绿色+蓝色/红色)。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平和垂直解析度减半存储(即2×2个相邻像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 208
每通道12位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。以3×16位打包并跨3个独立平面存储(绿色+蓝色+红色)。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即2个水平相邻的像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 209
每通道12位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。以3×16位打包并跨3个独立平面存储(绿色+蓝色/红色)。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即2个水平相邻的像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 210
每通道12位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。以3×16位打包并存储在3个单独的平面(绿色+蓝色+红色)中。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_G16B16G16R16_422_UNORM = 211
每通道16位无符号浮点绿色/蓝色/红色通道数据格式,具有归一化值。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即两个水平相邻的像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_B16G16R16G16_422_UNORM = 212
每通道16位无符号浮点蓝色/绿色/红色通道数据格式,具有归一化值。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即两个水平相邻的像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 213
每通道16位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。存储在2个单独的平面(绿色+蓝色+红色)上。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平和垂直解析度减半存储(即2×2相邻像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G16_B16R16_2PLANE_420_UNORM = 214
每通道16位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。存储在2个单独的平面(绿色+蓝色/红色)上。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平和垂直解析度减半存储(即2×2相邻像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 215
每通道16位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。存储在3个单独的平面(绿色+蓝色+红色)上。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即2个水平相邻的像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G16_B16R16_2PLANE_422_UNORM = 216
每通道16位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。存储在3个单独的平面(绿色+蓝色/红色)上。值在[0.0,1.0]范围内。蓝色和红色通道数据以水平分辨率减半存储(即2个水平相邻的像素将共享蓝色/红色通道的相同值)。
DataFormat DATA_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 217
每通道16位无符号浮点绿色/蓝色/红色通道数据,具有归一化值,每个通道后加上6个未使用的位。存储在3个单独的平面(绿色+蓝色+红色)上。值在[0.0,1.0]范围内。
DataFormat DATA_FORMAT_MAX = 218
表示DataFormat枚举的大小。
flags BarrierMask: 🔗
BarrierMask BARRIER_MASK_VERTEX = 1
顶点着色器屏障蒙版。
BarrierMask BARRIER_MASK_FRAGMENT = 8
片段着色器屏障蒙版。
BarrierMask BARRIER_MASK_COMPUTE = 2
计算屏障掩码。
BarrierMask BARRIER_MASK_TRANSFER = 4
转移屏障面罩。
BarrierMask BARRIER_MASK_RASTER = 9
光栅屏障掩码(顶点和片段)。相当于BARRIER_MASK_VERTEX|BARRIER_MASK_FRAGMENT。
BarrierMask BARRIER_MASK_ALL_BARRIERS = 32767
所有类型(顶点、片段、计算、传输)的屏障掩码。
BarrierMask BARRIER_MASK_NO_BARRIER = 32768
任何类型都没有障碍。
enum TextureType: 🔗
TextureType TEXTURE_TYPE_1D = 0
一维纹理。
TextureType TEXTURE_TYPE_2D = 1
二维纹理。
TextureType TEXTURE_TYPE_3D = 2
三维纹理。
TextureType TEXTURE_TYPE_CUBE = 3
Cubemap 纹理.
TextureType TEXTURE_TYPE_1D_ARRAY = 4
一维纹理数组。
TextureType TEXTURE_TYPE_2D_ARRAY = 5
二维纹理数组。
TextureType TEXTURE_TYPE_CUBE_ARRAY = 6
Cubemap纹理数组。
TextureType TEXTURE_TYPE_MAX = 7
表示TextureType枚举的大小。
enum TextureSamples: 🔗
TextureSamples TEXTURE_SAMPLES_1 = 0
执行1个纹理样本(这是最快但质量最低的抗锯齿)。
TextureSamples TEXTURE_SAMPLES_2 = 1
执行2个纹理样本。
TextureSamples TEXTURE_SAMPLES_4 = 2
执行4个纹理样本。
TextureSamples TEXTURE_SAMPLES_8 = 3
执行8个纹理样本。移动GPU(包括Apple Si)不支持。
TextureSamples TEXTURE_SAMPLES_16 = 4
执行16个纹理样本。移动GPU和许多桌面GPU不支持。
TextureSamples TEXTURE_SAMPLES_32 = 5
执行32个纹理样本。大多数GPU不支持。
TextureSamples TEXTURE_SAMPLES_64 = 6
执行64个纹理样本(这是抗锯齿最慢但质量最高的)。大多数GPU不支持。
TextureSamples TEXTURE_SAMPLES_MAX = 7
表示TextureSamples枚举的大小。
flags TextureUsageBits: 🔗
TextureUsageBits TEXTURE_USAGE_SAMPLING_BIT = 1
可以对纹理进行采样。
TextureUsageBits TEXTURE_USAGE_COLOR_ATTACHMENT_BIT = 2
纹理可以用作帧缓冲区中的颜色附件。
TextureUsageBits TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 4
纹理可以用作帧缓冲区中的深度/模板附件。
TextureUsageBits TEXTURE_USAGE_STORAGE_BIT = 8
纹理可以用作存储图像。
TextureUsageBits TEXTURE_USAGE_STORAGE_ATOMIC_BIT = 16
纹理可以用作支持原子操作的存储图像。
TextureUsageBits TEXTURE_USAGE_CPU_READ_BIT = 32
在CPU上使用texture_get_data()可以比不使用此位更快地读回纹理,因为它始终保存在系统内存中。
TextureUsageBits TEXTURE_USAGE_CAN_UPDATE_BIT = 64
可以使用texture_update()更新纹理。
TextureUsageBits TEXTURE_USAGE_CAN_COPY_FROM_BIT = 128
纹理可以是texture_copy()的来源。
TextureUsageBits TEXTURE_USAGE_CAN_COPY_TO_BIT = 256
纹理可以是texture_copy()的目标。
TextureUsageBits TEXTURE_USAGE_INPUT_ATTACHMENT_BIT = 512
纹理可以用作帧缓冲区中的输入附件。
enum TextureSwizzle: 🔗
TextureSwizzle TEXTURE_SWIZZLE_IDENTITY = 0
按原样返回采样值。
TextureSwizzle TEXTURE_SWIZZLE_ZERO = 1
采样时始终返回0.0。
TextureSwizzle TEXTURE_SWIZZLE_ONE = 2
采样时始终返回1.0。
TextureSwizzle TEXTURE_SWIZZLE_R = 3
采样红色通道。
TextureSwizzle TEXTURE_SWIZZLE_G = 4
采样绿色通道。
TextureSwizzle TEXTURE_SWIZZLE_B = 5
采样蓝色通道。
TextureSwizzle TEXTURE_SWIZZLE_A = 6
对alpha通道进行采样。
TextureSwizzle TEXTURE_SWIZZLE_MAX = 7
表示TextureSwizzle枚举的大小。
enum TextureSliceType: 🔗
TextureSliceType TEXTURE_SLICE_2D = 0
二维纹理切片。
TextureSliceType TEXTURE_SLICE_CUBEMAP = 1
立方体贴图纹理切片。
TextureSliceType TEXTURE_SLICE_3D = 2
3维纹理切片。
enum SamplerFilter: 🔗
SamplerFilter SAMPLER_FILTER_NEAREST = 0
最近邻采样器过滤。以比源更高的分辨率采样将导致像素化外观。
SamplerFilter SAMPLER_FILTER_LINEAR = 1
双线性采样器滤波。以比源更高的分辨率进行采样会导致外观模糊。
enum SamplerRepeatMode: 🔗
SamplerRepeatMode SAMPLER_REPEAT_MODE_REPEAT = 0
启用重复的示例。
SamplerRepeatMode SAMPLER_REPEAT_MODE_MIRRORED_REPEAT = 1
启用镜像重复的示例。当采样超出[0.0,1.0]范围时,返回采样器的镜像版本。如果采样更远,此镜像版本将再次镜像,模式将无限期重复。
SamplerRepeatMode SAMPLER_REPEAT_MODE_CLAMP_TO_EDGE = 2
禁用重复的采样。当采样超出[0.0,1.0]范围时,返回边缘最后一个像素的颜色。
SamplerRepeatMode SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER = 3
禁用重复的采样。当采样超出[0.0,1.0]范围时,返回指定的RDSamplerState.border_color。
SamplerRepeatMode SAMPLER_REPEAT_MODE_MIRROR_CLAMP_TO_EDGE = 4
启用了镜像重复的示例,但只有一次。在[-1.0,0.0]范围内采样时,返回采样器的镜像版本。在[-1.0,1.0]范围外采样时,返回边缘上最后一个像素的颜色。
SamplerRepeatMode SAMPLER_REPEAT_MODE_MAX = 5
表示SamplerRepeatMode枚举的大小。
enum SamplerBorderColor: 🔗
SamplerBorderColor SAMPLER_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0
在[0.0,1.0]范围外采样时返回浮点透明黑色。仅当采样器重复模式为SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER时有效。
SamplerBorderColor SAMPLER_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1
在[0.0,1.0]范围外采样时返回整数透明黑色。仅当采样器重复模式为SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER时有效。
SamplerBorderColor SAMPLER_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2
在[0.0,1.0]范围之外采样时返回浮点不透明的黑色。仅当采样器重复模式为SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER时有效。
SamplerBorderColor SAMPLER_BORDER_COLOR_INT_OPAQUE_BLACK = 3
在[0.0,1.0]范围之外采样时返回整数不透明的黑色。仅当采样器重复模式为SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER时有效。
SamplerBorderColor SAMPLER_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4
在[0.0,1.0]范围之外采样时返回浮点不透明的白色。仅当采样器重复模式为SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER时有效。
SamplerBorderColor SAMPLER_BORDER_COLOR_INT_OPAQUE_WHITE = 5
在[0.0,1.0]范围之外采样时返回整数不透明的白色。仅当采样器重复模式为SAMPLER_REPEAT_MODE_CLAMP_TO_BORDER时有效。
SamplerBorderColor SAMPLER_BORDER_COLOR_MAX = 6
表示SamplerBorderColor枚举的大小。
enum VertexFrequency: 🔗
VertexFrequency VERTEX_FREQUENCY_VERTEX = 0
顶点属性寻址是顶点的函数。这用于指定从缓冲区中提取顶点属性的速率。
VertexFrequency VERTEX_FREQUENCY_INSTANCE = 1
顶点属性寻址是实例索引的函数。这用于指定从缓冲区中提取顶点属性的速率。
enum IndexBufferFormat: 🔗
IndexBufferFormat INDEX_BUFFER_FORMAT_UINT16 = 0
16位无符号整数格式的索引缓冲区。这将可以指定的最大索引限制为65535。
IndexBufferFormat INDEX_BUFFER_FORMAT_UINT32 = 1
32位无符号整数格式的索引缓冲区。这将可以指定的最大索引限制为4294967295。
flags StorageBufferUsage: 🔗
StorageBufferUsage STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT = 1
flags BufferCreationBits: 🔗
BufferCreationBits BUFFER_CREATION_DEVICE_ADDRESS_BIT = 1
如果您希望使用 buffer_get_device_address() 功能,可以选择设置此标志。您必须首先检查 GPU 是否支持该功能。:
rd = RenderingServer.get_rendering_device()
if rd.has_feature(RenderingDevice.SUPPORTS_BUFFER_DEVICE_ADDRESS):
storage_buffer = rd.storage_buffer_create(bytes.size(), bytes, RenderingDevice.STORAGE_BUFFER_USAGE_SHADER_DEVICE_ADDRESS):
storage_buffer_address = rd.buffer_get_device_address(storage_buffer)
BufferCreationBits BUFFER_CREATION_AS_STORAGE_BIT = 2
设置此标志,以便将其创建为存储。如果计算着色器需要访问(用于读取或写入)缓冲区,这很有用,例如骨架动画在需要访问顶点缓冲区的计算着色器中处理,稍后由顶点着色器作为常规光栅化管道的一部分使用。
enum UniformType: 🔗
UniformType UNIFORM_TYPE_SAMPLER = 0
取样器均匀。
UniformType UNIFORM_TYPE_SAMPLER_WITH_TEXTURE = 1
具有纹理的采样器均匀。
UniformType UNIFORM_TYPE_TEXTURE = 2
纹理均匀。
UniformType UNIFORM_TYPE_IMAGE = 3
形象统一。
UniformType UNIFORM_TYPE_TEXTURE_BUFFER = 4
纹理缓冲均匀。
UniformType UNIFORM_TYPE_SAMPLER_WITH_TEXTURE_BUFFER = 5
带有纹理缓冲区的采样器均匀。
UniformType UNIFORM_TYPE_IMAGE_BUFFER = 6
图像缓冲区统一。
UniformType UNIFORM_TYPE_UNIFORM_BUFFER = 7
均匀缓冲均匀。
UniformType UNIFORM_TYPE_STORAGE_BUFFER = 8
存储缓冲区统一。
UniformType UNIFORM_TYPE_INPUT_ATTACHMENT = 9
输入附件统一。
UniformType UNIFORM_TYPE_MAX = 10
表示UniformType枚举的大小。
enum RenderPrimitive: 🔗
RenderPrimitive RENDER_PRIMITIVE_POINTS = 0
点渲染原语(大小不变,与摄像机的距离无关)。
RenderPrimitive RENDER_PRIMITIVE_LINES = 1
线列表渲染原语。线彼此分开绘制。
RenderPrimitive RENDER_PRIMITIVE_LINES_WITH_ADJACENCY = 2
注意:邻接仅对i3D不公开的几何着色器有用。
RenderPrimitive RENDER_PRIMITIVE_LINESTRIPS = 3
线带渲染原语。绘制的线连接到前一个顶点。
RenderPrimitive RENDER_PRIMITIVE_LINESTRIPS_WITH_ADJACENCY = 4
注意:邻接仅对i3D不公开的几何着色器有用。
RenderPrimitive RENDER_PRIMITIVE_TRIANGLES = 5
三角形列表渲染原语。三角形彼此分开绘制。
RenderPrimitive RENDER_PRIMITIVE_TRIANGLES_WITH_ADJACENCY = 6
带邻接关系的三角形列表渲染基元。n 注意: 邻接关系仅在几何着色器中有用,而i3D并未公开几何着色器
RenderPrimitive RENDER_PRIMITIVE_TRIANGLE_STRIPS = 7
三角形条渲染原语。绘制的三角形连接到前一个三角形。
RenderPrimitive RENDER_PRIMITIVE_TRIANGLE_STRIPS_WITH_AJACENCY = 8
注意:邻接仅对i3D不公开的几何着色器有用。
RenderPrimitive RENDER_PRIMITIVE_TRIANGLE_STRIPS_WITH_RESTART_INDEX = 9
启用原语重启的三角形条渲染原语。绘制的三角形连接到前一个三角形,但可以在绘制之前指定原语重启索引,以在指定索引之后创建第二个三角形条。
注意:仅与索引抽奖兼容。
RenderPrimitive RENDER_PRIMITIVE_TESSELATION_PATCH = 10
镶嵌补丁渲染原语。仅对镶嵌着色器有用,可用于变形这些补丁。
RenderPrimitive RENDER_PRIMITIVE_MAX = 11
表示RenderPrimitive枚举的大小。
enum PolygonCullMode: 🔗
PolygonCullMode POLYGON_CULL_DISABLED = 0
不要使用多边形正面或背面剔除。
PolygonCullMode POLYGON_CULL_FRONT = 1
使用多边形正面剔除(指向摄像机的脸被隐藏)。
PolygonCullMode POLYGON_CULL_BACK = 2
使用多边形背面剔除(远离摄像机的脸被隐藏)。
enum PolygonFrontFace: 🔗
PolygonFrontFace POLYGON_FRONT_FACE_CLOCKWISE = 0
顺时针绕线顺序来确定多边形的哪一面是它的正面。
PolygonFrontFace POLYGON_FRONT_FACE_COUNTER_CLOCKWISE = 1
逆时针绕线顺序来确定多边形的哪一面是它的正面。
enum StencilOperation: 🔗
StencilOperation STENCIL_OP_KEEP = 0
保持当前模板值。
StencilOperation STENCIL_OP_ZERO = 1
将模板值设置为0。
StencilOperation STENCIL_OP_REPLACE = 2
用新的模板值替换现有的模板值。
StencilOperation STENCIL_OP_INCREMENT_AND_CLAMP = 3
增加现有模板值,如果达到最大可表示无符号值,则钳制到最大可表示无符号值。模板位被视为无符号整数。
StencilOperation STENCIL_OP_DECREMENT_AND_CLAMP = 4
如果达到最小值,则减小现有模板值并钳位到最小值。模板位被视为无符号整数。
StencilOperation STENCIL_OP_INVERT = 5
按位反转现有模板值。
StencilOperation STENCIL_OP_INCREMENT_AND_WRAP = 6
如果达到最大可表示无符号,则递增模板值并绕至0。模板位被视为无符号整数。
StencilOperation STENCIL_OP_DECREMENT_AND_WRAP = 7
减少模板值,如果达到最小值,则绕到最大可表示无符号。模板位被视为无符号整数。
StencilOperation STENCIL_OP_MAX = 8
表示StencilOperation枚举的大小。
enum CompareOperator: 🔗
CompareOperator COMPARE_OP_NEVER = 0
“从不”比较(COMPARE_OP_ALWAYS的反义词)。
CompareOperator COMPARE_OP_LESS = 1
“小于”比较。
CompareOperator COMPARE_OP_EQUAL = 2
“平等”比较。
CompareOperator COMPARE_OP_LESS_OR_EQUAL = 3
“小于或等于”比较。
CompareOperator COMPARE_OP_GREATER = 4
“大于”的比较。
CompareOperator COMPARE_OP_NOT_EQUAL = 5
“不对等”的比较。
CompareOperator COMPARE_OP_GREATER_OR_EQUAL = 6
“大于或等于”的比较。
CompareOperator COMPARE_OP_ALWAYS = 7
“总是”比较(COMPARE_OP_NEVER的反义词)。
CompareOperator COMPARE_OP_MAX = 8
表示CompareOperator枚举的大小。
enum LogicOperation: 🔗
LogicOperation LOGIC_OP_CLEAR = 0
清晰的逻辑运算(结果总是0)。另见LOGIC_OP_SET。
LogicOperation LOGIC_OP_AND = 1
AND逻辑运算。
LogicOperation LOGIC_OP_AND_REVERSE = 2
与逻辑运算,目标*操作数被反转。另见LOGIC_OP_AND_INVERTED。
LogicOperation LOGIC_OP_COPY = 3
复制逻辑操作(保持源值不变)。另见LOGIC_OP_COPY_INVERTED和LOGIC_OP_NO_OP。
LogicOperation LOGIC_OP_AND_INVERTED = 4
与源操作数反转的逻辑运算。另见LOGIC_OP_AND_REVERSE。
LogicOperation LOGIC_OP_NO_OP = 5
无操作逻辑操作(保持目标值不变)。另见LOGIC_OP_COPY。
LogicOperation LOGIC_OP_XOR = 6
异或(XOR)逻辑运算。
LogicOperation LOGIC_OP_OR = 7
OR逻辑运算。
LogicOperation LOGIC_OP_NOR = 8
非或(NOR)逻辑运算。
LogicOperation LOGIC_OP_EQUIVALENT = 9
非异或(XNOR)逻辑运算。
LogicOperation LOGIC_OP_INVERT = 10
反转逻辑运算。
LogicOperation LOGIC_OP_OR_REVERSE = 11
与目标操作数反转的OR逻辑运算。另见LOGIC_OP_OR_REVERSE。
LogicOperation LOGIC_OP_COPY_INVERTED = 12
非逻辑运算(反转值)。另见LOGIC_OP_COPY。
LogicOperation LOGIC_OP_OR_INVERTED = 13
源操作数被反转的OR逻辑运算。另见LOGIC_OP_OR_REVERSE。
LogicOperation LOGIC_OP_NAND = 14
非与(NAND)逻辑运算。
LogicOperation LOGIC_OP_SET = 15
SET逻辑运算(结果总是1)。另见LOGIC_OP_CLEAR。
LogicOperation LOGIC_OP_MAX = 16
表示LogicOperation枚举的大小。
enum BlendFactor: 🔗
BlendFactor BLEND_FACTOR_ZERO = 0
常数0.0混合因子。
BlendFactor BLEND_FACTOR_ONE = 1
常量1.0混合因子。
BlendFactor BLEND_FACTOR_SRC_COLOR = 2
颜色混合因子是源颜色。Alpha混合因子是源alpha。
BlendFactor BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3
颜色混合因子是1.0-源颜色。Alpha混合因子是1.0-源alpha。
BlendFactor BLEND_FACTOR_DST_COLOR = 4
颜色混合因子是目标颜色。Alpha混合因子是目标alpha。
BlendFactor BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5
颜色混合因子是1.0-目标颜色。Alpha混合因子是1.0-目标Alpha。
BlendFactor BLEND_FACTOR_SRC_ALPHA = 6
颜色和alpha混合因子是源alpha。
BlendFactor BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7
颜色和alpha混合因子是1.0-源alpha。
BlendFactor BLEND_FACTOR_DST_ALPHA = 8
颜色和alpha混合因子是目标alpha。
BlendFactor BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9
颜色和alpha混合因子是1.0-目标alpha。
BlendFactor BLEND_FACTOR_CONSTANT_COLOR = 10
颜色混合因子是混合常数颜色。Alpha混合因子是混合常数Alpha(参见draw_list_set_blend_constants())。
BlendFactor BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11
颜色混合因子是1.0-混合常数颜色。Alpha混合因子是1.0-混合常数Alpha(参见draw_list_set_blend_constants())。
BlendFactor BLEND_FACTOR_CONSTANT_ALPHA = 12
颜色和α混合因子是混合常数α(参见draw_list_set_blend_constants())。
BlendFactor BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13
颜色和alpha混合因子是1.0-混合常数alpha(参见draw_list_set_blend_constants())。
BlendFactor BLEND_FACTOR_SRC_ALPHA_SATURATE = 14
颜色混合因子是min(源alpha,1.0-目标alpha)。Alpha混合因子是1.0。
BlendFactor BLEND_FACTOR_SRC1_COLOR = 15
颜色混合因子是第二源颜色。Alpha混合因子是第二源Alpha。仅与双源混合相关。
BlendFactor BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16
颜色混合因子是1.0-秒源颜色。Alpha混合因子是1.0-秒源alpha。仅与双源混合相关。
BlendFactor BLEND_FACTOR_SRC1_ALPHA = 17
颜色和alpha混合因子是第二源alpha。仅与双源混合相关。
BlendFactor BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18
颜色和alpha混合因子是1.0-秒源alpha。仅与双源混合相关。
BlendFactor BLEND_FACTOR_MAX = 19
表示BlendFactor枚举的大小。
enum BlendOperation: 🔗
BlendOperation BLEND_OP_ADD = 0
加法混合操作(源+目标)。
BlendOperation BLEND_OP_SUBTRACT = 1
减法混合操作(源-目标)。
BlendOperation BLEND_OP_REVERSE_SUBTRACT = 2
反向减法混合操作(目标-源)。
BlendOperation BLEND_OP_MINIMUM = 3
最小混合操作(保持两者的最低值)。
BlendOperation BLEND_OP_MAXIMUM = 4
最大混合操作(保持两者的最高值)。
BlendOperation BLEND_OP_MAX = 5
表示BlendOperation枚举的大小。
flags PipelineDynamicStateFlags: 🔗
PipelineDynamicStateFlags DYNAMIC_STATE_LINE_WIDTH = 1
允许动态更改渲染线的宽度。
PipelineDynamicStateFlags DYNAMIC_STATE_DEPTH_BIAS = 2
允许动态更改深度偏差。
PipelineDynamicStateFlags DYNAMIC_STATE_BLEND_CONSTANTS = 4
PipelineDynamicStateFlags DYNAMIC_STATE_DEPTH_BOUNDS = 8
PipelineDynamicStateFlags DYNAMIC_STATE_STENCIL_COMPARE_MASK = 16
PipelineDynamicStateFlags DYNAMIC_STATE_STENCIL_WRITE_MASK = 32
PipelineDynamicStateFlags DYNAMIC_STATE_STENCIL_REFERENCE = 64
enum InitialAction: 🔗
InitialAction INITIAL_ACTION_LOAD = 0
已弃用: 初始操作由 RenderingDevice 自动处理。
加载帧缓冲区的先前内容。
InitialAction INITIAL_ACTION_CLEAR = 1
已弃用: 初始操作由 RenderingDevice 自动处理。
清除整个帧缓冲区或其指定区域。
InitialAction INITIAL_ACTION_DISCARD = 2
已弃用: 初始操作由 RenderingDevice 自动处理。
忽略帧缓冲区以前的内容。如果您要覆盖所有像素并且不需要读取任何像素,这是最快的选择。
InitialAction INITIAL_ACTION_MAX = 3
已弃用: 初始操作由 RenderingDevice 自动处理。
表示InitialAction枚举的大小。
InitialAction INITIAL_ACTION_CLEAR_REGION = 1
已弃用: 初始操作由 RenderingDevice 自动处理。
InitialAction INITIAL_ACTION_CLEAR_REGION_CONTINUE = 1
已弃用: 初始操作由 RenderingDevice 自动处理。
InitialAction INITIAL_ACTION_KEEP = 0
已弃用: 初始操作由 RenderingDevice 自动处理。
InitialAction INITIAL_ACTION_DROP = 2
已弃用: 初始操作由 RenderingDevice 自动处理。
InitialAction INITIAL_ACTION_CONTINUE = 0
已弃用: 初始操作由 RenderingDevice 自动处理。
enum FinalAction: 🔗
FinalAction FINAL_ACTION_STORE = 0
已弃用: 最终操作由 RenderingDevice 自动处理。
将绘制列表的结果存储在帧缓冲区中。这通常是您想要做的。
FinalAction FINAL_ACTION_DISCARD = 1
已弃用: 最终操作由 RenderingDevice 自动处理。
丢弃帧缓冲区的内容。如果您不需要使用抽签列表的结果,这是最快的选择。
FinalAction FINAL_ACTION_MAX = 2
已弃用: 最终操作由 RenderingDevice 自动处理。
表示FinalAction枚举的大小。
FinalAction FINAL_ACTION_READ = 0
已弃用: 最终操作由 RenderingDevice 自动处理。
FinalAction FINAL_ACTION_CONTINUE = 0
已弃用: 最终操作由 RenderingDevice 自动处理。
enum ShaderStage: 🔗
ShaderStage SHADER_STAGE_VERTEX = 0
顶点着色器阶段。这可用于从着色器操作顶点(但不能创建新顶点)。
ShaderStage SHADER_STAGE_FRAGMENT = 1
片段着色器阶段(在Direct3D中称为“像素着色器”)。这可用于操作来自着色器的像素。
ShaderStage SHADER_STAGE_TESSELATION_CONTROL = 2
镶嵌控制着色器阶段。这可用于从着色器创建额外的几何体。
ShaderStage SHADER_STAGE_TESSELATION_EVALUATION = 3
镶嵌评估着色器阶段。这可用于从着色器创建其他几何体。
ShaderStage SHADER_STAGE_COMPUTE = 4
计算着色器阶段。这可用于在着色器中运行任意计算任务,在GPU而不是CPU上执行它们。
ShaderStage SHADER_STAGE_MAX = 5
表示ShaderStage枚举的大小。
ShaderStage SHADER_STAGE_VERTEX_BIT = 1
顶点着色器阶段位(参见SHADER_STAGE_VERTEX)。
ShaderStage SHADER_STAGE_FRAGMENT_BIT = 2
片段着色器阶段位(参见SHADER_STAGE_FRAGMENT)。
ShaderStage SHADER_STAGE_TESSELATION_CONTROL_BIT = 4
镶嵌控制着色器阶段位(参见SHADER_STAGE_TESSELATION_CONTROL)。
ShaderStage SHADER_STAGE_TESSELATION_EVALUATION_BIT = 8
镶嵌评估着色器阶段位(参见SHADER_STAGE_TESSELATION_EVALUATION)。
ShaderStage SHADER_STAGE_COMPUTE_BIT = 16
计算着色器阶段位(参见SHADER_STAGE_COMPUTE)。
enum ShaderLanguage: 🔗
ShaderLanguage SHADER_LANGUAGE_GLSL = 0
Khronos的GLSL着色语言(OpenGL和Vulkan原生使用)。这是用于核心i3D着色器的语言。
ShaderLanguage SHADER_LANGUAGE_HLSL = 1
Microsoft的高级着色语言(Direct3D原生使用,但也可以在Vulkan中使用)。
enum PipelineSpecializationConstantType: 🔗
PipelineSpecializationConstantType PIPELINE_SPECIALIZATION_CONSTANT_TYPE_BOOL = 0
布尔特化常量。
PipelineSpecializationConstantType PIPELINE_SPECIALIZATION_CONSTANT_TYPE_INT = 1
整数特化常量。
PipelineSpecializationConstantType PIPELINE_SPECIALIZATION_CONSTANT_TYPE_FLOAT = 2
浮点特化常量。
enum Features: 🔗
Features SUPPORTS_BUFFER_DEVICE_ADDRESS = 6
功能支持缓冲区设备地址扩展。
enum Limit: 🔗
Limit LIMIT_MAX_BOUND_UNIFORM_SETS = 0
在给定时间可以绑定的最大统一集数。
Limit LIMIT_MAX_FRAMEBUFFER_COLOR_ATTACHMENTS = 1
在给定时间可以使用的最大颜色帧缓冲区附件数。
Limit LIMIT_MAX_TEXTURES_PER_UNIFORM_SET = 2
每个统一集可以使用的最大纹理数。
Limit LIMIT_MAX_SAMPLERS_PER_UNIFORM_SET = 3
每个统一集可以使用的最大采样器数。
Limit LIMIT_MAX_STORAGE_BUFFERS_PER_UNIFORM_SET = 4
每个统一集的存储缓冲区的最大数量。
Limit LIMIT_MAX_STORAGE_IMAGES_PER_UNIFORM_SET = 5
每个统一集的最大存储图像数。
Limit LIMIT_MAX_UNIFORM_BUFFERS_PER_UNIFORM_SET = 6
每个统一集的最大统一缓冲区数。
Limit LIMIT_MAX_DRAW_INDEXED_INDEX = 7
索引绘制命令的最大索引。
Limit LIMIT_MAX_FRAMEBUFFER_HEIGHT = 8
帧缓冲区的最大高度(以像素为单位)。
Limit LIMIT_MAX_FRAMEBUFFER_WIDTH = 9
帧缓冲区的最大宽度(以像素为单位)。
Limit LIMIT_MAX_TEXTURE_ARRAY_LAYERS = 10
纹理阵列层数的最大值。
Limit LIMIT_MAX_TEXTURE_SIZE_1D = 11
支持的最大一维纹理大小(以单轴上的像素为单位)。
Limit LIMIT_MAX_TEXTURE_SIZE_2D = 12
支持的最大二维纹理大小(以单轴上的像素为单位)。
Limit LIMIT_MAX_TEXTURE_SIZE_3D = 13
支持的最大3维纹理大小(以单轴上的像素为单位)。
Limit LIMIT_MAX_TEXTURE_SIZE_CUBE = 14
支持的最大立方体贴图纹理大小(以单面单轴上的像素为单位)。
Limit LIMIT_MAX_TEXTURES_PER_SHADER_STAGE = 15
每个着色器阶段的最大纹理数。
Limit LIMIT_MAX_SAMPLERS_PER_SHADER_STAGE = 16
每个着色器阶段的最大采样器数量。
Limit LIMIT_MAX_STORAGE_BUFFERS_PER_SHADER_STAGE = 17
每个着色器阶段的存储缓冲区的最大数量。
Limit LIMIT_MAX_STORAGE_IMAGES_PER_SHADER_STAGE = 18
每个着色器阶段的最大存储图像数。
Limit LIMIT_MAX_UNIFORM_BUFFERS_PER_SHADER_STAGE = 19
每个统一集的最大统一缓冲区数。
Limit LIMIT_MAX_PUSH_CONSTANT_SIZE = 20
推送常量的最大大小。许多设备限制为128字节,因此请尽量避免推送常量超过128字节以确保兼容性,即使您的GPU报告的值更高。
Limit LIMIT_MAX_UNIFORM_BUFFER_SIZE = 21
统一缓冲区的最大大小。
Limit LIMIT_MAX_VERTEX_INPUT_ATTRIBUTE_OFFSET = 22
最大顶点输入属性偏移量。
Limit LIMIT_MAX_VERTEX_INPUT_ATTRIBUTES = 23
顶点输入属性的最大数量。
Limit LIMIT_MAX_VERTEX_INPUT_BINDINGS = 24
最大顶点输入绑定数。
Limit LIMIT_MAX_VERTEX_INPUT_BINDING_STRIDE = 25
最大顶点输入绑定步幅。
Limit LIMIT_MIN_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 26
最小均匀缓冲区偏移对齐。
计算着色器的最大共享内存大小。
Limit LIMIT_MAX_COMPUTE_WORKGROUP_COUNT_X = 28
X轴上计算着色器的最大工作组数。
Limit LIMIT_MAX_COMPUTE_WORKGROUP_COUNT_Y = 29
Y轴上计算着色器的最大工作组数。
Limit LIMIT_MAX_COMPUTE_WORKGROUP_COUNT_Z = 30
Z轴上计算着色器的最大工作组数。
Limit LIMIT_MAX_COMPUTE_WORKGROUP_INVOCATIONS = 31
计算着色器的最大工作组调用数。
Limit LIMIT_MAX_COMPUTE_WORKGROUP_SIZE_X = 32
X轴上计算着色器的最大工作组大小。
Limit LIMIT_MAX_COMPUTE_WORKGROUP_SIZE_Y = 33
Y轴上计算着色器的最大工作组大小。
Limit LIMIT_MAX_COMPUTE_WORKGROUP_SIZE_Z = 34
Z轴上计算着色器的最大工作组大小。
Limit LIMIT_MAX_VIEWPORT_DIMENSIONS_X = 35
最大视口宽度(以像素为单位)。
Limit LIMIT_MAX_VIEWPORT_DIMENSIONS_Y = 36
最大视口高度(以像素为单位)。
Limit LIMIT_METALFX_TEMPORAL_SCALER_MIN_SCALE = 46
使用MetalFX时间升级器时,返回ProjectSettings.rendering/scaling_3d/scale的最小值。
注意:返回值乘以1000000的因子以保留6位精度。它必须除以100000.0才能将值转换为浮点数。
Limit LIMIT_METALFX_TEMPORAL_SCALER_MAX_SCALE = 47
使用MetalFX时间升级器时,返回ProjectSettings.rendering/scaling_3d/scale的最大值。
注意:返回值乘以1000000的因子以保留6位精度。它必须除以100000.0才能将值转换为浮点数。
enum MemoryType: 🔗
MemoryType MEMORY_TEXTURES = 0
由纹理获取的记忆。
MemoryType MEMORY_BUFFERS = 1
缓冲区占用的内存。
MemoryType MEMORY_TOTAL = 2
占用的总内存。这大于MEMORY_TEXTURES和MEMORY_BUFFERS之和,因为它还包括杂项内存使用。
enum BreadcrumbMarker: 🔗
BreadcrumbMarker NONE = 0
BreadcrumbMarker REFLECTION_PROBES = 65536
BreadcrumbMarker SKY_PASS = 131072
BreadcrumbMarker LIGHTMAPPER_PASS = 196608
BreadcrumbMarker SHADOW_PASS_DIRECTIONAL = 262144
BreadcrumbMarker SHADOW_PASS_CUBE = 327680
BreadcrumbMarker OPAQUE_PASS = 393216
BreadcrumbMarker ALPHA_PASS = 458752
BreadcrumbMarker TRANSPARENT_PASS = 524288
BreadcrumbMarker POST_PROCESSING_PASS = 589824
BreadcrumbMarker BLIT_PASS = 655360
BreadcrumbMarker UI_PASS = 720896
BreadcrumbMarker DEBUG_PASS = 786432
flags DrawFlags: 🔗
DrawFlags DRAW_DEFAULT_ALL = 0
不要清除或忽略任何附件。
DrawFlags DRAW_CLEAR_COLOR_0 = 1
清除第一个颜色附件。
DrawFlags DRAW_CLEAR_COLOR_1 = 2
清除第二个颜色附件。
DrawFlags DRAW_CLEAR_COLOR_2 = 4
清除第三个颜色附件。
DrawFlags DRAW_CLEAR_COLOR_3 = 8
清除第四个颜色附件。
DrawFlags DRAW_CLEAR_COLOR_4 = 16
清除第五个颜色附件。
DrawFlags DRAW_CLEAR_COLOR_5 = 32
清除第六个颜色附件。
DrawFlags DRAW_CLEAR_COLOR_6 = 64
清除第七个颜色附件。
DrawFlags DRAW_CLEAR_COLOR_7 = 128
清除第八个颜色附件。
DrawFlags DRAW_CLEAR_COLOR_MASK = 255
用于清除所有颜色附件的蒙版。
DrawFlags DRAW_CLEAR_COLOR_ALL = 255
清除所有颜色附件。
DrawFlags DRAW_IGNORE_COLOR_0 = 256
忽略第一个颜色附件之前的内容。
DrawFlags DRAW_IGNORE_COLOR_1 = 512
忽略第二个颜色附件之前的内容。
DrawFlags DRAW_IGNORE_COLOR_2 = 1024
忽略第三个颜色附件之前的内容。
DrawFlags DRAW_IGNORE_COLOR_3 = 2048
忽略第四个颜色附件之前的内容。
DrawFlags DRAW_IGNORE_COLOR_4 = 4096
忽略第五个颜色附件之前的内容。
DrawFlags DRAW_IGNORE_COLOR_5 = 8192
忽略第六色附件前面的内容。
DrawFlags DRAW_IGNORE_COLOR_6 = 16384
忽略第七色附件之前的内容。
DrawFlags DRAW_IGNORE_COLOR_7 = 32768
忽略第八色附件之前的内容。
DrawFlags DRAW_IGNORE_COLOR_MASK = 65280
用于忽略颜色附件的所有先前内容的蒙版。
DrawFlags DRAW_IGNORE_COLOR_ALL = 65280
忽略所有颜色附件的先前内容。
DrawFlags DRAW_CLEAR_DEPTH = 65536
清除深度附件。
DrawFlags DRAW_IGNORE_DEPTH = 131072
忽略深度附件之前的内容。
DrawFlags DRAW_CLEAR_STENCIL = 262144
清除模板附件。
DrawFlags DRAW_IGNORE_STENCIL = 524288
忽略模板附件之前的内容。
DrawFlags DRAW_CLEAR_ALL = 327935
清除所有附件。
DrawFlags DRAW_IGNORE_ALL = 720640
忽略所有附件之前的内容。
常量¶
INVALID_ID = -1 🔗
如果值无效,则由返回ID的函数返回。
INVALID_FORMAT_ID = -1 🔗
如果值无效,则由返回格式ID的函数返回。
方法说明¶
void barrier(from: BitField[BarrierMask] = 32767, to: BitField[BarrierMask] = 32767) 🔗
已弃用: RenderingDevice 会自动插入屏障。
这种方法什么也不做。
Error buffer_clear(buffer: RID, offset: int, size_bytes: int) 🔗
清除buffer的内容,清除size_bytes字节,从offset开始。
在以下情况下打印错误:
大小不是4的倍数
-offset+size_bytes指定的区域超过缓冲区
-抽签列表当前处于活动状态(由draw_list_begin()创建)
-计算列表当前处于活动状态(由compute_list_begin()创建)
Error buffer_copy(src_buffer: RID, dst_buffer: RID, src_offset: int, dst_offset: int, size: int) 🔗
将src_buffer中src_offset的size字节复制到dst_buffer中dst_offset。
在以下情况下打印错误:
-size超过src_buffer或dst_buffer的相应偏移量
-抽签列表当前处于活动状态(由draw_list_begin()创建)
-计算列表当前处于活动状态(由compute_list_begin()创建)
PackedByteArray buffer_get_data(buffer: RID, offset_bytes: int = 0, size_bytes: int = 0) 🔗
返回指定buffer的数据副本,可选地offset_bytes和size_bytes可以设置为仅复制缓冲区的一部分。
注意:此方法将阻止GPU工作,直到检索到数据。有关以更高性能方式返回数据的替代方法,请参阅buffer_get_data_async()。
Error buffer_get_data_async(buffer: RID, callback: Callable, offset_bytes: int = 0, size_bytes: int = 0) 🔗
buffer_get_data()的异步版本。RenderingDevice 将在一定帧数内使用请求时缓冲区中的数据调用callback。
注意:目前,延迟对应于ProjectSettings.rendering/rendering_device/vsync/frame_queue_size指定的帧数。
注意:由于硬件带宽限制,即使使用异步方法,下载大缓冲区对于实时应用来说也可能成本过高。在处理大资源时,你可以调整诸如ProjectSettings.rendering/rendering_device/staging_buffer/block_size_kb之类的设置,以额外内存为代价提高传输速度。
func _buffer_get_data_callback(array):
value = array.decode_u32(0)
...
rd.buffer_get_data_async(buffer, _buffer_get_data_callback)
int buffer_get_device_address(buffer: RID) 🔗
返回给定buffer的地址,该地址可以以任何方式传递给着色器以访问底层数据。缓冲区必须是在启用此功能的情况下创建的。
注意:您必须通过调用has_feature()并以SUPPORTS_BUFFER_DEVICE_ADDRESS作为参数来检查GPU是否支持此功能。
Error buffer_update(buffer: RID, offset: int, size_bytes: int, data: PackedByteArray) 🔗
使用指定的data更新缓冲区中从offset开始的size_bytes字节区域。
在以下情况下打印错误:
-offset+size_bytes指定的区域超过缓冲区
-抽签列表当前处于活动状态(由draw_list_begin()创建)
-计算列表当前处于活动状态(由compute_list_begin()创建)
void capture_timestamp(name: String) 🔗
使用指定的name创建时间戳标记。这用于使用get_captured_timestamp_cpu_time()、get_captured_timestamp_gpu_time()和get_captured_timestamp_name()方法进行性能报告。
void compute_list_add_barrier(compute_list: int) 🔗
在指定的compute_list中引发Vulkan计算障碍。
启动一个使用 compute_* 方法创建的计算命令列表。返回值应传递给其他 compute_list_* 函数。
不能同时创建多个计算列表;你必须首先使用 compute_list_end() 完成上一个计算列表。
一个简单的计算操作可能如下所示(代码并非完整示例):
n¶
var rd = RenderingDevice.new()
var compute_list = rd.compute_list_begin()
rd.compute_list_bind_compute_pipeline(compute_list, compute_shader_dilate_pipeline)
rd.compute_list_bind_uniform_set(compute_list, compute_base_uniform_set, 0)
rd.compute_list_bind_uniform_set(compute_list, dilate_uniform_set, 1)
for i in atlas_slices:
rd.compute_list_set_push_constant(compute_list, push_constant, push_constant.size())
rd.compute_list_dispatch(compute_list, group_size.x, group_size.y, group_size.z)
# No barrier, let them run all together.
rd.compute_list_end()
void compute_list_bind_compute_pipeline(compute_list: int, compute_pipeline: RID) 🔗
告诉GPU在处理计算列表时使用什么计算管道。如果自上次调用此函数以来着色器发生了变化,i3D将取消绑定所有描述符集,并在compute_list_dispatch()内重新绑定它们。
void compute_list_bind_uniform_set(compute_list: int, uniform_set: RID, set_index: int) 🔗
将uniform_set绑定到此compute_list。i3D确保统一集中的所有纹理都具有正确的Vulkan访问蒙版。如果i3D必须更改纹理的访问蒙版,它将提高Vulkan图像内存屏障。
void compute_list_dispatch(compute_list: int, x_groups: int, y_groups: int, z_groups: int) 🔗
提交计算列表以在GPU上进行处理。这是相当于draw_list_draw()的计算。
void compute_list_dispatch_indirect(compute_list: int, buffer: RID, offset: int) 🔗
提交计算列表以在GPU上进行处理,给定的组计数存储在buffer的offset处。缓冲区必须使用STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT标志创建。
void compute_list_end() 🔗
完成使用compute_*方法创建的计算命令列表。
void compute_list_set_push_constant(compute_list: int, buffer: PackedByteArray, size_bytes: int) 🔗
为指定的compute_list将推送常量数据设置为buffer。着色器决定如何使用此二进制数据。缓冲区的字节大小也必须在size_bytes中指定(这可以通过调用传递的buffer上的PackedByteArray.size()方法获得)。
RID compute_pipeline_create(shader: RID, specialization_constants: Array[RDPipelineSpecializationConstant] = []) 🔗
创建一个新的计算管道。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
bool compute_pipeline_is_valid(compute_pipeline: RID) 🔗
如果compute_pipelineRID指定的计算管道有效,则返回true,否则返回false。
RenderingDevice create_local_device() 🔗
创建一个新的本地RenderingDevice。这对于独立于引擎的其余部分在GPU上执行计算操作最有用。
void draw_command_begin_label(name: String, color: Color) 🔗
创建可以在RenderDoc等第三方工具中显示的命令缓冲区调试标签区域。所有区域必须以draw_command_end_label()调用结束。当从提交到单个队列的线性系列中查看时,对draw_command_begin_label()和draw_command_end_label()的调用必须匹配和平衡。
VK_EXT_DEBUG_UTILS_EXTENSION_NAMEVulkan扩展必须可用并启用,命令缓冲区调试标签区域才能工作。另请参见draw_command_end_label()。
void draw_command_end_label() 🔗
结束由draw_command_begin_label()调用启动的命令缓冲区调试标签区域。
void draw_command_insert_label(name: String, color: Color) 🔗
已弃用: 由于命令重新排序,插入标签不再适用。
这种方法什么也不做。
int draw_list_begin(framebuffer: RID, draw_flags: BitField[DrawFlags] = 0, clear_color_values: PackedColorArray = PackedColorArray(), clear_depth_value: float = 1.0, clear_stencil_value: int = 0, region: Rect2 = Rect2(0, 0, 0, 0), breadcrumb: int = 0) 🔗
列出使用draw_*方法创建的栅格绘制命令列表。返回的值应传递给其他draw_list_*函数。
不能同时创建多个绘制列表;必须先使用draw_list_end()完成先前的绘制列表。
一个简单的绘制操作示例(代码不是完整的示例):
var rd = RenderingDevice.new()
var clear_colors = PackedColorArray([Color(0, 0, 0, 0), Color(0, 0, 0, 0), Color(0, 0, 0, 0)])
var draw_list = rd.draw_list_begin(framebuffers[i], RenderingDevice.CLEAR_COLOR_ALL, clear_colors, true, 1.0f, true, 0, Rect2(), RenderingDevice.OPAQUE_PASS)
# Draw opaque.
rd.draw_list_bind_render_pipeline(draw_list, raster_pipeline)
rd.draw_list_bind_uniform_set(draw_list, raster_base_uniform, 0)
rd.draw_list_set_push_constant(draw_list, raster_push_constant, raster_push_constant.size())
rd.draw_list_draw(draw_list, false, 1, slice_triangle_count[i] * 3)
# Draw wire.
rd.draw_list_bind_render_pipeline(draw_list, raster_pipeline_wire)
rd.draw_list_bind_uniform_set(draw_list, raster_base_uniform, 0)
rd.draw_list_set_push_constant(draw_list, raster_push_constant, raster_push_constant.size())
rd.draw_list_draw(draw_list, false, 1, slice_triangle_count[i] * 3)
rd.draw_list_end()
draw_flags指示是否应清除或忽略帧缓冲的纹理,忽略附件将完全丢弃绘制列表之前存在的任何内容,减少渲染通道使用的内存带宽,但如果不替换像素,则会产生无用结果。默认行为允许引擎在纹理可丢弃时确定正确的操作,这可以提高性能。请参阅RDTextureFormat或texture_set_discardable()。
breadcrumb参数可以是任意的32位整数,有助于诊断GPU崩溃。如果i3D是以开发或调试模式构建的;当GPU崩溃时,i3D将转储在崩溃时正在执行的所有着色器,面包屑有助于诊断这些着色器属于哪个阶段。
这不会影响渲染行为,可以设置为0。建议使用BreadcrumbMarker枚举以保持一致性,但这不是必需的。也可以使用位操作来添加额外的数据,例如。
rd.draw_list_begin(fb[i], RenderingDevice.CLEAR_COLOR_ALL, clear_colors, true, 1.0f, true, 0, Rect2(), RenderingDevice.OPAQUE_PASS | 5)
int draw_list_begin_for_screen(screen: int = 0, clear_color: Color = Color(0, 0, 0, 1)) 🔗
draw_list_begin()的高级变体,自动调整参数以绘制到screenID指定的窗口上。
注意:不能与本地RenderingDevices一起使用,因为它们没有屏幕。如果在本地RenderingDevice上调用,draw_list_begin_for_screen()返回INVALID_ID。
PackedInt64Array draw_list_begin_split(framebuffer: RID, splits: int, initial_color_action: InitialAction, final_color_action: FinalAction, initial_depth_action: InitialAction, final_depth_action: FinalAction, clear_color_values: PackedColorArray = PackedColorArray(), clear_depth: float = 1.0, clear_stencil: int = 0, region: Rect2 = Rect2(0, 0, 0, 0), storage_textures: Array[RID] = []) 🔗
已弃用: 由 RenderingDevice 自动使用的分割绘制列表。
此方法不做任何事情,并且总是返回一个空的PackedInt64Array。
void draw_list_bind_index_array(draw_list: int, index_array: RID) 🔗
绑定index_array到指定的draw_list。
void draw_list_bind_render_pipeline(draw_list: int, render_pipeline: RID) 🔗
绑定render_pipeline到指定的draw_list。
void draw_list_bind_uniform_set(draw_list: int, uniform_set: RID, set_index: int) 🔗
绑定uniform_set到指定的draw_list。还必须指定set_index,它是从0开始的标识符,必须与抽签列表预期的标识符匹配。
void draw_list_bind_vertex_array(draw_list: int, vertex_array: RID) 🔗
绑定vertex_array到指定的draw_list。
void draw_list_disable_scissor(draw_list: int) 🔗
删除并禁用指定draw_list的剪刀矩形。另请参见draw_list_enable_scissor()。
void draw_list_draw(draw_list: int, use_indices: bool, instances: int, procedural_vertex_count: int = 0) 🔗
提交draw_list以在GPU上渲染。这是相当于compute_list_dispatch()的栅格。
void draw_list_draw_indirect(draw_list: int, use_indices: bool, buffer: RID, offset: int = 0, draw_count: int = 1, stride: int = 0) 🔗
提交draw_list以在GPU上渲染,给定参数存储在buffer的offset处。参数是整数:顶点计数、实例计数、第一个顶点、第一个实例。使用索引时:索引计数、实例计数、第一个索引、顶点偏移、第一个实例。缓冲区必须使用STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT标志创建。
void draw_list_enable_scissor(draw_list: int, rect: Rect2 = Rect2(0, 0, 0, 0)) 🔗
创建剪刀矩形并为指定的draw_list启用它。剪刀矩形用于通过丢弃落在屏幕指定矩形部分之外的片段进行裁剪。另请参见draw_list_disable_scissor()。
注意:指定的rect自动与屏幕的尺寸相交,这意味着它不能超过屏幕的尺寸。
void draw_list_end() 🔗
完成使用draw_*方法创建的栅格绘图命令列表。
void draw_list_set_blend_constants(draw_list: int, color: Color) 🔗
将指定draw_list的混合常量设置为color。仅当图形管道创建时设置了DYNAMIC_STATE_BLEND_CONSTANTS标志时才使用混合常量。
void draw_list_set_push_constant(draw_list: int, buffer: PackedByteArray, size_bytes: int) 🔗
为指定的draw_list将推送常量数据设置为buffer。着色器决定如何使用此二进制数据。缓冲区的字节大小也必须在size_bytes中指定(这可以通过调用传递的buffer上的PackedByteArray.size()方法获得)。
int draw_list_switch_to_next_pass() 🔗
切换到下一个平局。
PackedInt64Array draw_list_switch_to_next_pass_split(splits: int) 🔗
已弃用: 由 RenderingDevice 自动使用的分割绘制列表。
此方法不做任何事情,并且总是返回一个空的PackedInt64Array。
RID framebuffer_create(textures: Array[RID], validate_with_format: int = -1, view_count: int = 1) 🔗
创建一个新的帧缓冲区。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
RID framebuffer_create_empty(size: Vector2i, samples: TextureSamples = 0, validate_with_format: int = -1) 🔗
创建一个新的空帧缓冲区。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
RID framebuffer_create_multipass(textures: Array[RID], passes: Array[RDFramebufferPass], validate_with_format: int = -1, view_count: int = 1) 🔗
创建一个新的多通道帧缓冲区。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
int framebuffer_format_create(attachments: Array[RDAttachmentFormat], view_count: int = 1) 🔗
使用指定的attachments和view_count创建新的帧缓冲区格式。返回新帧缓冲区的唯一帧缓冲区格式ID。
如果view_count大于或等于2,则启用用于VR渲染的multiview。这需要支持Vulkan多视图扩展。
int framebuffer_format_create_empty(samples: TextureSamples = 0) 🔗
使用指定数量的samples创建一个新的空帧缓冲区格式并返回其ID。
int framebuffer_format_create_multipass(attachments: Array[RDAttachmentFormat], passes: Array[RDFramebufferPass], view_count: int = 1) 🔗
使用指定的attachments、passes和view_count创建多通道帧缓冲区格式并返回其ID。如果view_count大于或等于2,则启用用于VR渲染的多视图。这需要支持Vulkan多视图扩展。
TextureSamples framebuffer_format_get_texture_samples(format: int, render_pass: int = 0) 🔗
返回用于给定帧缓冲区formatID的纹理样本数(由framebuffer_get_format()返回)。
int framebuffer_get_format(framebuffer: RID) 🔗
返回framebufferRID指定的帧缓冲区的格式ID。此ID保证对相同格式是唯一的,不需要释放。
bool framebuffer_is_valid(framebuffer: RID) const 🔗
返回true如果framebufferRID指定的帧缓冲区有效,则返回false否则。
尝试释放RenderingDevice中的对象。为避免内存泄漏,应在使用对象后调用它,因为直接使用RenderingDevice时不会自动进行内存管理。
void full_barrier() 🔗
已弃用: RenderingDevice 会自动插入屏障。
这种方法什么也不做。
int get_captured_timestamp_cpu_time(index: int) const 🔗
返回由index指定的呈现步骤的时间戳(以引擎启动后的微秒为单位)。另请参见get_captured_timestamp_gpu_time()和capture_timestamp()。
int get_captured_timestamp_gpu_time(index: int) const 🔗
返回由index指定的渲染步骤的时间戳(以引擎启动后的微秒为单位)。另请参见get_captured_timestamp_cpu_time()和capture_timestamp()。
String get_captured_timestamp_name(index: int) const 🔗
返回index指定的呈现步骤的时间戳名称。另请参见capture_timestamp()。
int get_captured_timestamps_count() const 🔗
返回可用于分析的时间戳(呈现步骤)的总数。
int get_captured_timestamps_frame() const 🔗
返回具有可用于查询的呈现时间戳的最后一帧的索引。
int get_device_allocation_count() const 🔗
返回GPU为内部驱动程序结构执行了多少分配。
这仅由Vulkan在调试版本中使用,当此信息未被跟踪或未知时可以返回0。
int get_device_allocs_by_object_type(type: int) const 🔗
与get_device_allocation_count()相同,但针对给定的对象类型进行了过滤。
类型参数必须在范围[0;get_tracked_object_type_count-1]中。如果get_tracked_object_type_count()为0,则忽略类型参数并始终返回0。
这仅由Vulkan在调试版本中使用,当此信息未被跟踪或未知时可以返回0。
int get_device_memory_by_object_type(type: int) const 🔗
与get_device_total_memory()相同,但针对给定的对象类型进行了过滤。
类型参数必须在范围[0;get_tracked_object_type_count-1]中。如果get_tracked_object_type_count()为0,则忽略类型参数并始终返回0。
这仅由Vulkan在调试版本中使用,当此信息未被跟踪或未知时可以返回0。
String get_device_name() const 🔗
返回视频适配器的名称(例如GeForce GTX 1080/PCIe/SSE2)。相当于RenderingServer.get_video_adapter_name()。另见get_device_vendor_name()。
String get_device_pipeline_cache_uuid() const 🔗
返回管道缓存的通用唯一标识符。这用于在磁盘上缓存着色器文件,从而避免在后续引擎运行时重新编译着色器。此UUID因显卡型号和驱动程序版本而异。因此,更新图形驱动程序将使着色器缓存无效。
int get_device_total_memory() const 🔗
返回GPU正在使用的字节数。
这仅由Vulkan在调试版本中使用,当此信息未被跟踪或未知时可以返回0。
String get_device_vendor_name() const 🔗
返回视频适配器的供应商(例如“NVIDIA Corporation”)。相当于RenderingServer.get_video_adapter_vendor()。另请参见get_device_name()。
int get_driver_allocation_count() const 🔗
返回GPU驱动程序为内部驱动程序结构执行了多少分配。
这仅由Vulkan在调试版本中使用,当此信息未被跟踪或未知时可以返回0。
int get_driver_allocs_by_object_type(type: int) const 🔗
与get_driver_allocation_count()相同,但针对给定的对象类型进行了过滤。
类型参数必须在范围[0;get_tracked_object_type_count-1]中。如果get_tracked_object_type_count()为0,则忽略类型参数并始终返回0。
这仅由Vulkan在调试版本中使用,当此信息未被跟踪或未知时可以返回0。
String get_driver_and_device_memory_report() const 🔗
使用以下方法返回CSV格式的字符串报告:
-get_tracked_object_type_count()
-get_driver_allocation_count()
-get_driver_memory_by_object_type()
-get_driver_allocs_by_object_type()
-get_device_allocation_count()
-get_device_memory_by_object_type()
-get_device_allocs_by_object_type()
i3D还必须使用--extra-gpu-memory-tracking命令行参数启动。
int get_driver_memory_by_object_type(type: int) const 🔗
与get_driver_total_memory()相同,但针对给定的对象类型进行了过滤。
类型参数必须在范围[0;get_tracked_object_type_count-1]中。如果get_tracked_object_type_count()为0,则忽略类型参数并始终返回0。
这仅由Vulkan在调试版本中使用,当此信息未被跟踪或未知时可以返回0。
int get_driver_resource(resource: DriverResource, rid: RID, index: int) 🔗
返回指定rid的驱动程序resource的唯一标识符。某些驱动程序资源类型忽略指定的rid(请参阅DriverResource描述)。index总是被忽略,但无论如何都必须指定。
int get_driver_total_memory() const 🔗
返回GPU驱动程序用于内部驱动程序结构的字节数。
这仅由Vulkan在调试版本中使用,当此信息未被跟踪或未知时可以返回0。
返回图形API保存的帧数。更高的值会导致更高的输入延迟,但吞吐量更一致。对于主RenderingDevice,帧被循环(通常为3帧,启用了三缓冲V-Sync)。但是,本地RenderingDevice只有1帧。
int get_memory_usage(type: MemoryType) const 🔗
返回给定type对应的内存使用情况(以字节为单位)。使用Vulkan时,这些统计信息由Vulkan Memory Allocator计算。
String get_perf_report() const 🔗
返回一个字符串,其中包含过去帧的性能报告。更新每一帧。
String get_tracked_object_name(type_index: int) const 🔗
返回给定type_index的对象类型的名称。此值必须在范围[0;get_tracked_object_type_count-1]内。如果get_tracked_object_type_count()为0,则忽略type参数并始终返回相同的字符串。
返回值很重要,因为它为传递给get_driver_memory_by_object_type()、get_driver_allocs_by_object_type()、get_device_memory_by_object_type()和get_device_allocs_by_object_type()的类型赋予了意义。
-DEVICE_MEMORY
-PIPELINE_CACHE
-SWAPCHAIN_KHR
-COMMAND_POOL
因此,如果例如get_tracked_object_name(5)返回COMMAND_POOL,则get_device_memory_by_object_type(5)返回GPU用于命令池的字节。
i3D还必须使用--extra-gpu-memory-tracking命令行参数启动。
int get_tracked_object_type_count() const 🔗
返回可跟踪对象的类型有多少。
i3D还必须使用--extra-gpu-memory-tracking命令行参数启动。
bool has_feature(feature: Features) const 🔗
如果GPU支持feature,则返回true。
RID index_array_create(index_buffer: RID, index_offset: int, index_count: int) 🔗
创建一个新的索引数组。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
RID index_buffer_create(size_indices: int, format: IndexBufferFormat, data: PackedByteArray = PackedByteArray(), use_restart_indices: bool = false, creation_bits: BitField[BufferCreationBits] = 0) 🔗
创建一个新的索引缓冲区。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
int limit_get(limit: Limit) const 🔗
返回指定limit的值。此限制因当前图形硬件(有时是驱动程序版本)而异。如果超过给定限制,将发生渲染错误。
各种图形硬件的限制可以在Vulkan硬件数据库中找到。
RID render_pipeline_create(shader: RID, framebuffer_format: int, vertex_format: int, primitive: RenderPrimitive, rasterization_state: RDPipelineRasterizationState, multisample_state: RDPipelineMultisampleState, stencil_state: RDPipelineDepthStencilState, color_blend_state: RDPipelineColorBlendState, dynamic_state_flags: BitField[PipelineDynamicStateFlags] = 0, for_render_pass: int = 0, specialization_constants: Array[RDPipelineSpecializationConstant] = []) 🔗
创建一个新的渲染管道。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
bool render_pipeline_is_valid(render_pipeline: RID) 🔗
如果render_pipelineRID指定的渲染管道有效,则返回true,否则返回false。
RID sampler_create(state: RDSamplerState) 🔗
创建一个新的采样器。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
bool sampler_is_format_supported_for_filter(format: DataFormat, sampler_filter: SamplerFilter) const 🔗
如果实现支持将format的纹理与给定的sampler_filter一起使用,则返回true。
int screen_get_framebuffer_format(screen: int = 0) const 🔗
返回给定屏幕的帧缓冲区格式。
注意:只有RenderingServer.get_rendering_device()返回的主RenderingDevice有格式,如果在本地RenderingDevice上调用,此方法会打印错误并返回INVALID_ID。
int screen_get_height(screen: int = 0) const 🔗
返回与给定窗口ID的图形API上下文匹配的窗口高度(以像素为单位)。尽管参数名为screen,但它返回窗口大小。另请参见screen_get_width()。
注意:只有RenderingServer.get_rendering_device()返回的主RenderingDevice有高度,如果在本地RenderingDevice上调用此方法会打印错误并返回INVALID_ID。
int screen_get_width(screen: int = 0) const 🔗
返回与给定窗口ID的图形API上下文匹配的窗口宽度(以像素为单位)。尽管参数名为screen,但它返回窗口大小。另请参见screen_get_height()。
注意:只有RenderingServer.get_rendering_device()返回的主RenderingDevice有宽度,如果在本地RenderingDevice上调用此方法会打印错误并返回INVALID_ID。
void set_resource_name(id: RID, name: String) 🔗
将id的资源名称设置为name。这用于使用第三方工具进行调试,例如RenderDoc。
可以命名以下类型的资源:纹理、采样器、顶点缓冲区、索引缓冲区、统一缓冲区、纹理缓冲区、存储缓冲区、统一设置缓冲区、着色器、渲染管道和计算管道。帧缓冲区无法命名。尝试命名不兼容的资源类型将打印错误。
注意:资源名称仅在引擎以详细模式运行(OS.is_stdout_verbose()=true)或使用使用dev_mode=yesSCons选项编译的引擎构建时设置。图形驱动程序还必须支持VK_EXT_DEBUG_UTILS_EXTENSION_NAMEVulkan扩展才能使命名资源工作。
PackedByteArray shader_compile_binary_from_spirv(spirv_data: RDShaderSPIRV, name: String = "") 🔗
从spirv_data编译二进制着色器,并将编译后的二进制数据作为PackedByteArray返回。此编译的着色器特定于所使用的GPU模型和驱动程序版本;它不适用于不同的GPU模型甚至不同的驱动程序版本。另请参阅shader_compile_spirv_from_source()。
name是一个可选的人类可读名称,可用于组织目的的编译着色器。
RDShaderSPIRV shader_compile_spirv_from_source(shader_source: RDShaderSource, allow_cache: bool = true) 🔗
从shader_source中的着色器源代码编译SPIR-V,并将SPIR-V作为RDShaderSPIRV返回。此中间语言着色器可跨不同的GPU模型和驱动程序版本移植,但在使用shader_compile_binary_from_spirv()编译成二进制着色器之前,GPU不能直接运行。
如果allow_cache是true,则使用i3D生成的着色器缓存。如果着色器已经在缓存中,这避免了可能冗长的着色器编译步骤。如果allow_cache是false,i3D的着色器缓存将被忽略,着色器将始终被重新编译。
RID shader_create_from_bytecode(binary_data: PackedByteArray, placeholder_rid: RID = RID()) 🔗
从二进制编译的着色器创建一个新的着色器实例。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。另请参见shader_compile_binary_from_spirv()和shader_create_from_spirv()。
RID shader_create_from_spirv(spirv_data: RDShaderSPIRV, name: String = "") 🔗
从SPIR-V中间代码创建一个新的着色器实例。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。另请参见shader_compile_spirv_from_source()和shader_create_from_bytecode()。
RID shader_create_placeholder() 🔗
通过分配一个RID而不初始化它来创建一个占位符RID,以便在shader_create_from_bytecode()中使用。这允许您为着色器创建一个RID并传递它,但将编译着色器推迟到以后。
int shader_get_vertex_input_attribute_mask(shader: RID) 🔗
返回内部顶点输入掩码。在内部,顶点输入掩码是一个无符号整数,由输入变量的位置(在GLSL中通过layout(location = ...)指定)组成(在GLSL中通过关键字中的in指定)。
RID storage_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), usage: BitField[StorageBufferUsage] = 0, creation_bits: BitField[BufferCreationBits] = 0) 🔗
创建具有指定data和usage的存储缓冲区。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
void submit() 🔗
推送帧设置和绘制命令缓冲区,然后将本地设备标记为当前正在处理(这允许调用sync())。
注意:仅在本地RenderingDevices中可用。
void sync() 🔗
强制CPU和GPU之间的同步,这在某些情况下可能需要。仅在需要时调用它,因为CPU-GPU同步具有性能成本。
注意:仅在本地RenderingDevices中可用。
RID texture_buffer_create(size_bytes: int, format: DataFormat, data: PackedByteArray = PackedByteArray()) 🔗
创建一个新的纹理缓冲区。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
Error texture_clear(texture: RID, color: Color, base_mipmap: int, mipmap_count: int, base_layer: int, layer_count: int) 🔗
通过用指定的color替换其所有像素来清除指定的texture。base_mipmap和mipmap_count确定纹理的哪些mipmap受此清除操作的影响,而base_layer和layer_count确定3D纹理(或纹理数组)的哪些层受此清除操作的影响。对于2D纹理(设计只有一层),base_layer必须是0,layer_count必须是1。
注意:texture在创建将其用作帧缓冲区一部分的绘制列表时无法清除。确保绘制列表已完成(并且使用它的颜色/深度纹理未设置为FINAL_ACTION_CONTINUE)以清除此纹理。
Error texture_copy(from_texture: RID, to_texture: RID, from_pos: Vector3, to_pos: Vector3, size: Vector3, src_mipmap: int, dst_mipmap: int, src_layer: int, dst_layer: int) 🔗
使用指定的from_pos、to_pos和size坐标将from_texture复制到to_texture。对于二维纹理,from_pos、to_pos和size的Z轴必须为0。还必须指定源和目标mipmap/图层,对于没有mipmap或单层纹理的纹理,这些参数为0。如果纹理复制成功,则返回@GlobalScope.ERR_INVALID_PARAMETER否则。
注意:from_texture纹理在创建将其用作帧缓冲区一部分的绘制列表时无法复制。确保绘制列表已完成(并且使用它的颜色/深度纹理未设置为FINAL_ACTION_CONTINUE)以复制此纹理。
注意:from_texture纹理需要检索TEXTURE_USAGE_CAN_COPY_FROM_BIT。
注意:to_texture在创建将其用作帧缓冲区一部分的绘制列表时无法复制。确保绘制列表已完成(并且使用它的颜色/深度纹理未设置为FINAL_ACTION_CONTINUE)以复制此纹理。
注意:to_texture需要检索TEXTURE_USAGE_CAN_COPY_TO_BIT。
注意:from_texture和to_texture必须是相同的类型(颜色或深度)。
RID texture_create(format: RDTextureFormat, view: RDTextureView, data: Array[PackedByteArray] = []) 🔗
创建一个新的纹理。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
注意:不要与RenderingServer.texture_2d_create()混淆,它创建特定于i3D的Texture2D资源,而不是图形API自己的纹理类型。
RID texture_create_from_extension(type: TextureType, format: DataFormat, samples: TextureSamples, usage_flags: BitField[TextureUsageBits], image: int, width: int, height: int, depth: int, layers: int) 🔗
返回具有给定type、format、samples、usage_flags、width、height、depth和layers的现有image(VkImage)的RID。这可用于允许i3D渲染到外部图像上。
使用指定的view和来自with_texture的纹理信息创建共享纹理。
使用指定的view和来自with_texture的layer和mipmap的纹理信息创建共享纹理。可以使用mipmap参数控制原始纹理中包含的mipmap的数量。仅与具有多层的纹理相关,例如3D纹理、纹理数组和立方体贴图。对于单层纹理,请使用texture_create_shared()。
对于2D纹理(只有一层),layer必须是0。
注意:图层切片仅支持2D纹理数组,不支持3D纹理或立方体贴图。
PackedByteArray texture_get_data(texture: RID, layer: int) 🔗
返回指定layer的texture数据作为原始二进制数据。对于2D纹理(只有一层),layer必须为0。
注意:texture在创建将其用作帧缓冲区一部分的绘制列表时无法检索。确保绘制列表已完成(并且使用它的颜色/深度纹理未设置为FINAL_ACTION_CONTINUE)以检索此纹理。否则,将打印错误并返回空的PackedByteArray。
注意:texture需要检索TEXTURE_USAGE_CAN_COPY_FROM_BIT。否则,将打印错误并返回空的PackedByteArray。
注意:此方法将阻止GPU工作,直到检索到数据。有关以更高性能方式返回数据的替代方法,请参阅texture_get_data_async()。
Error texture_get_data_async(texture: RID, layer: int, callback: Callable) 🔗
texture_get_data()的异步版本。渲染设备将在一定帧数后调用callback,并传入请求时纹理的数据。
注意:目前,延迟与ProjectSettings.rendering/rendering_device/vsync/frame_queue_size指定的帧数相对应。
注意:由于硬件带宽限制,即使使用异步方法,下载大纹理对于实时应用来说成本也可能过高。在处理大资源时,你可以调整诸如ProjectSettings.rendering/rendering_device/staging_buffer/texture_download_region_size_px和ProjectSettings.rendering/rendering_device/staging_buffer/block_size_kb等设置,以额外内存为代价提高传输速度。
func _texture_get_data_callback(array):
value = array.decode_u32(0)
...
rd.texture_get_data_async(texture, 0, _texture_get_data_callback)
RDTextureFormat texture_get_format(texture: RID) 🔗
返回用于创建此纹理的数据格式。
int texture_get_native_handle(texture: RID) 🔗
已弃用: 请改用 get_driver_resource() 和 DRIVER_RESOURCE_TEXTURE。
返回此纹理对象的内部图形句柄。用于与主要使用S3Extension的第三方API通信时使用。
注意:此函数返回一个uint64_t,它在内部映射到GLuint(OpenGL)或VkImage(Vulkan)。
bool texture_is_discardable(texture: RID) 🔗
如果texture可丢弃,则返回true,否则返回false。请参阅RDTextureFormat或texture_set_discardable()。
bool texture_is_format_supported_for_usage(format: DataFormat, usage_flags: BitField[TextureUsageBits]) const 🔗
如果给定的usage_flags支持指定的format,则返回true,否则返回false。
如果texture是共享的,则返回true,否则返回false。请参阅RDTextureView。
bool texture_is_valid(texture: RID) 🔗
如果texture有效,则返回true,否则返回false。
Error texture_resolve_multisample(from_texture: RID, to_texture: RID) 🔗
将from_texture纹理解析到to_texture并启用多采样抗锯齿。这必须在渲染帧缓冲区以使MSAA工作时使用。如果成功,则返回@GlobalScope.OK,否则返回@GlobalScope.ERR_INVALID_PARAMETER。
注意:from_texture和to_texture纹理必须具有相同的尺寸、格式和类型(颜色或深度)。
注意:from_texture在创建将其用作帧缓冲区一部分的绘制列表时无法复制。确保绘制列表已完成(并且使用它的颜色/深度纹理未设置为FINAL_ACTION_CONTINUE)以解析此纹理。
注意:from_texture需要检索TEXTURE_USAGE_CAN_COPY_FROM_BIT。
注意:from_texture必须是多重采样的,并且还必须是2D(或3D/立方体贴图纹理的切片)。
注意:to_texture在创建将其用作帧缓冲区一部分的绘制列表时无法复制。确保绘制列表已完成(并且使用它的颜色/深度纹理未设置为FINAL_ACTION_CONTINUE)以解析此纹理。
注意:to_texture纹理需要检索TEXTURE_USAGE_CAN_COPY_TO_BIT。
注意:``to_texture``纹理必须**不是是多重采样的,并且还必须是2D(或3D/立方体贴图纹理的切片)。
void texture_set_discardable(texture: RID, discardable: bool) 🔗
更新texture的可丢弃属性。
如果纹理是可丢弃的,则不需要在帧之间保留其内容。此标志仅在纹理用作绘制列表中的目标时才相关。
RenderingDevice使用此信息来确定是否可以丢弃纹理的内容,从而消除对内存的不必要写入并提高性能。
Error texture_update(texture: RID, layer: int, data: PackedByteArray) 🔗
用新数据更新纹理数据,替换以前的数据。更新后的纹理数据必须具有相同的尺寸和格式。对于2D纹理(只有一层),layer必须为0。如果更新成功,则返回@GlobalScope.OK,否则返回@GlobalScope.ERR_INVALID_PARAMETER。
注意:在创建绘图或计算列表期间禁止更新纹理。
注意:现有的texture在创建将其用作帧缓冲区一部分的绘制列表时无法更新。确保绘制列表已完成(并且使用它的颜色/深度纹理未设置为FINAL_ACTION_CONTINUE)以更新此纹理。
注意:现有的texture要求TEXTURE_USAGE_CAN_UPDATE_BIT是可更新的。
RID uniform_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), creation_bits: BitField[BufferCreationBits] = 0) 🔗
创建一个新的统一缓冲区。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
RID uniform_set_create(uniforms: Array[RDUniform], shader: RID, shader_set: int) 🔗
创建一个新的统一集。可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
bool uniform_set_is_valid(uniform_set: RID) 🔗
检查uniform_set是否有效,即是否拥有。
RID vertex_array_create(vertex_count: int, vertex_format: int, src_buffers: Array[RID], offsets: PackedInt64Array = PackedInt64Array()) 🔗
基于指定的缓冲区创建顶点数组。可选地,可以为每个缓冲区定义offsets(以字节为单位)。
RID vertex_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), creation_bits: BitField[BufferCreationBits] = 0) 🔗
可以使用返回的RID访问它。
完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。
int vertex_format_create(vertex_descriptions: Array[RDVertexAttribute]) 🔗
使用指定的vertex_descriptions创建新的顶点格式。返回与新创建的顶点格式对应的唯一顶点格式ID。