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)

Error

buffer_clear(buffer: RID, offset: int, size_bytes: int)

Error

buffer_copy(src_buffer: RID, dst_buffer: RID, src_offset: int, dst_offset: int, size: int)

PackedByteArray

buffer_get_data(buffer: RID, offset_bytes: int = 0, size_bytes: int = 0)

Error

buffer_get_data_async(buffer: RID, callback: Callable, offset_bytes: int = 0, size_bytes: int = 0)

int

buffer_get_device_address(buffer: RID)

Error

buffer_update(buffer: RID, offset: int, size_bytes: int, data: PackedByteArray)

void

capture_timestamp(name: String)

void

compute_list_add_barrier(compute_list: int)

int

compute_list_begin()

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

compute_list_end()

void

compute_list_set_push_constant(compute_list: int, buffer: PackedByteArray, size_bytes: int)

RID

compute_pipeline_create(shader: RID, specialization_constants: Array[RDPipelineSpecializationConstant] = [])

bool

compute_pipeline_is_valid(compute_pipeline: RID)

RenderingDevice

create_local_device()

void

draw_command_begin_label(name: String, color: Color)

void

draw_command_end_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)

int

draw_list_begin_for_screen(screen: int = 0, clear_color: Color = Color(0, 0, 0, 1))

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] = [])

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

draw_list_end()

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)

int

draw_list_switch_to_next_pass()

PackedInt64Array

draw_list_switch_to_next_pass_split(splits: int)

RID

framebuffer_create(textures: Array[RID], validate_with_format: int = -1, view_count: int = 1)

RID

framebuffer_create_empty(size: Vector2i, samples: TextureSamples = 0, validate_with_format: int = -1)

RID

framebuffer_create_multipass(textures: Array[RID], passes: Array[RDFramebufferPass], validate_with_format: int = -1, view_count: int = 1)

int

framebuffer_format_create(attachments: Array[RDAttachmentFormat], view_count: int = 1)

int

framebuffer_format_create_empty(samples: TextureSamples = 0)

int

framebuffer_format_create_multipass(attachments: Array[RDAttachmentFormat], passes: Array[RDFramebufferPass], view_count: int = 1)

TextureSamples

framebuffer_format_get_texture_samples(format: int, render_pass: int = 0)

int

framebuffer_get_format(framebuffer: RID)

bool

framebuffer_is_valid(framebuffer: RID) const

void

free_rid(rid: RID)

void

full_barrier()

int

get_captured_timestamp_cpu_time(index: int) const

int

get_captured_timestamp_gpu_time(index: int) const

String

get_captured_timestamp_name(index: int) const

int

get_captured_timestamps_count() const

int

get_captured_timestamps_frame() const

int

get_device_allocation_count() const

int

get_device_allocs_by_object_type(type: int) const

int

get_device_memory_by_object_type(type: int) const

String

get_device_name() const

String

get_device_pipeline_cache_uuid() const

int

get_device_total_memory() const

String

get_device_vendor_name() const

int

get_driver_allocation_count() const

int

get_driver_allocs_by_object_type(type: int) const

String

get_driver_and_device_memory_report() const

int

get_driver_memory_by_object_type(type: int) const

int

get_driver_resource(resource: DriverResource, rid: RID, index: int)

int

get_driver_total_memory() const

int

get_frame_delay() const

int

get_memory_usage(type: MemoryType) const

String

get_perf_report() const

String

get_tracked_object_name(type_index: int) const

int

get_tracked_object_type_count() const

bool

has_feature(feature: Features) const

RID

index_array_create(index_buffer: RID, index_offset: int, index_count: int)

RID

index_buffer_create(size_indices: int, format: IndexBufferFormat, data: PackedByteArray = PackedByteArray(), use_restart_indices: bool = false, creation_bits: BitField[BufferCreationBits] = 0)

int

limit_get(limit: Limit) const

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] = [])

bool

render_pipeline_is_valid(render_pipeline: RID)

RID

sampler_create(state: RDSamplerState)

bool

sampler_is_format_supported_for_filter(format: DataFormat, sampler_filter: SamplerFilter) const

int

screen_get_framebuffer_format(screen: int = 0) const

int

screen_get_height(screen: int = 0) const

int

screen_get_width(screen: int = 0) const

void

set_resource_name(id: RID, name: String)

PackedByteArray

shader_compile_binary_from_spirv(spirv_data: RDShaderSPIRV, name: String = "")

RDShaderSPIRV

shader_compile_spirv_from_source(shader_source: RDShaderSource, allow_cache: bool = true)

RID

shader_create_from_bytecode(binary_data: PackedByteArray, placeholder_rid: RID = RID())

RID

shader_create_from_spirv(spirv_data: RDShaderSPIRV, name: String = "")

RID

shader_create_placeholder()

int

shader_get_vertex_input_attribute_mask(shader: RID)

RID

storage_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), usage: BitField[StorageBufferUsage] = 0, creation_bits: BitField[BufferCreationBits] = 0)

void

submit()

void

sync()

RID

texture_buffer_create(size_bytes: int, format: DataFormat, data: PackedByteArray = PackedByteArray())

Error

texture_clear(texture: RID, color: Color, base_mipmap: int, mipmap_count: int, base_layer: int, layer_count: int)

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)

RID

texture_create(format: RDTextureFormat, view: RDTextureView, data: Array[PackedByteArray] = [])

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)

RID

texture_create_shared(view: RDTextureView, with_texture: RID)

RID

texture_create_shared_from_slice(view: RDTextureView, with_texture: RID, layer: int, mipmap: int, mipmaps: int = 1, slice_type: TextureSliceType = 0)

PackedByteArray

texture_get_data(texture: RID, layer: int)

Error

texture_get_data_async(texture: RID, layer: int, callback: Callable)

RDTextureFormat

texture_get_format(texture: RID)

int

texture_get_native_handle(texture: RID)

bool

texture_is_discardable(texture: RID)

bool

texture_is_format_supported_for_usage(format: DataFormat, usage_flags: BitField[TextureUsageBits]) const

bool

texture_is_shared(texture: RID)

bool

texture_is_valid(texture: RID)

Error

texture_resolve_multisample(from_texture: RID, to_texture: RID)

void

texture_set_discardable(texture: RID, discardable: bool)

Error

texture_update(texture: RID, layer: int, data: PackedByteArray)

RID

uniform_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), creation_bits: BitField[BufferCreationBits] = 0)

RID

uniform_set_create(uniforms: Array[RDUniform], shader: RID, shader_set: int)

bool

uniform_set_is_valid(uniform_set: RID)

RID

vertex_array_create(vertex_count: int, vertex_format: int, src_buffers: Array[RID], offsets: PackedInt64Array = PackedInt64Array())

RID

vertex_buffer_create(size_bytes: int, data: PackedByteArray = PackedByteArray(), creation_bits: BitField[BufferCreationBits] = 0)

int

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_INVERTEDLOGIC_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_SHARED_MEMORY_SIZE = 27

计算着色器的最大共享内存大小。

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_TEXTURESMEMORY_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_buffersrc_offsetsize字节复制到dst_bufferdst_offset

在以下情况下打印错误:

-size超过src_bufferdst_buffer的相应偏移量

-抽签列表当前处于活动状态(由draw_list_begin()创建)

-计算列表当前处于活动状态(由compute_list_begin()创建)


PackedByteArray buffer_get_data(buffer: RID, offset_bytes: int = 0, size_bytes: int = 0) 🔗

返回指定buffer的数据副本,可选地offset_bytessize_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计算障碍。


int compute_list_begin() 🔗

启动一个使用 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上进行处理,给定的组计数存储在bufferoffset处。缓冲区必须使用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指示是否应清除或忽略帧缓冲的纹理,忽略附件将完全丢弃绘制列表之前存在的任何内容,减少渲染通道使用的内存带宽,但如果不替换像素,则会产生无用结果。默认行为允许引擎在纹理可丢弃时确定正确的操作,这可以提高性能。请参阅RDTextureFormattexture_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上渲染,给定参数存储在bufferoffset处。参数是整数:顶点计数、实例计数、第一个顶点、第一个实例。使用索引时:索引计数、实例计数、第一个索引、顶点偏移、第一个实例。缓冲区必须使用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) 🔗

使用指定的attachmentsview_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) 🔗

使用指定的attachmentspassesview_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否则。


void free_rid(rid: RID) 🔗

尝试释放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_name()

-get_tracked_object_type_count()

-get_driver_total_memory()

-get_driver_allocation_count()

-get_driver_memory_by_object_type()

-get_driver_allocs_by_object_type()

-get_device_total_memory()

-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。


int get_frame_delay() const 🔗

返回图形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_cachetrue,则使用i3D生成的着色器缓存。如果着色器已经在缓存中,这避免了可能冗长的着色器编译步骤。如果allow_cachefalse,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) 🔗

创建具有指定datausage存储缓冲区。可以使用返回的RID访问它。

完成RID后,您将希望使用RenderingDevice的free_rid()方法释放RID。


void submit() 🔗

推送帧设置和绘制命令缓冲区,然后将本地设备标记为当前正在处理(这允许调用sync())。

注意:仅在本地RenderingDevices中可用。


void sync() 🔗

强制CPU和GPU之间的同步,这在某些情况下可能需要。仅在需要时调用它,因为CPU-GPU同步具有性能成本。

注意:仅在本地RenderingDevices中可用。

注意:sync()只能在submit()之后调用。


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替换其所有像素来清除指定的texturebase_mipmapmipmap_count确定纹理的哪些mipmap受此清除操作的影响,而base_layerlayer_count确定3D纹理(或纹理数组)的哪些层受此清除操作的影响。对于2D纹理(设计只有一层),base_layer必须是0layer_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_posto_possize坐标将from_texture复制到to_texture。对于二维纹理,from_posto_possize的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_textureto_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) 🔗

返回具有给定typeformatsamplesusage_flagswidthheightdepthlayers的现有imageVkImage)的RID。这可用于允许i3D渲染到外部图像上。


RID texture_create_shared(view: RDTextureView, with_texture: RID) 🔗

使用指定的view和来自with_texture的纹理信息创建共享纹理。


RID texture_create_shared_from_slice(view: RDTextureView, with_texture: RID, layer: int, mipmap: int, mipmaps: int = 1, slice_type: TextureSliceType = 0) 🔗

使用指定的view和来自with_texturelayermipmap的纹理信息创建共享纹理。可以使用mipmap参数控制原始纹理中包含的mipmap的数量。仅与具有多层的纹理相关,例如3D纹理、纹理数组和立方体贴图。对于单层纹理,请使用texture_create_shared()

对于2D纹理(只有一层),layer必须是0

注意:图层切片仅支持2D纹理数组,不支持3D纹理或立方体贴图。


PackedByteArray texture_get_data(texture: RID, layer: int) 🔗

返回指定layertexture数据作为原始二进制数据。对于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_pxProjectSettings.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。请参阅RDTextureFormattexture_set_discardable()


bool texture_is_format_supported_for_usage(format: DataFormat, usage_flags: BitField[TextureUsageBits]) const 🔗

如果给定的usage_flags支持指定的format,则返回true,否则返回false


bool texture_is_shared(texture: RID) 🔗

如果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_textureto_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。