LDKRHIBackendType
typedef enum LDKRHIBackendType{
LDK_RHI_BACKEND_NONE=0,
LDK_RHI_BACKEND_OPENGL33
}LDKRHIBackendType;
LDKRHIBindingDesc
typedef struct LDKRHIBindingDesc{
uint32_t slot;
LDKRHIBuffer buffer;
uint32_t buffer_offset;
uint32_t buffer_size;
LDKRHITexture texture;
LDKRHISampler sampler;
}LDKRHIBindingDesc;
LDKRHIBindingLayoutEntry
typedef struct LDKRHIBindingLayoutEntry{
uint32_t slot;
LDKRHIBindingType type;
uint32_t stages;
}LDKRHIBindingLayoutEntry;
LDKRHIBindingType
typedef enum LDKRHIBindingType{
LDK_RHI_BINDING_TYPE_UNIFORM_BUFFER=0,
LDK_RHI_BINDING_TYPE_STORAGE_BUFFER,
LDK_RHI_BINDING_TYPE_TEXTURE,
LDK_RHI_BINDING_TYPE_SAMPLER,
LDK_RHI_BINDING_TYPE_TEXTURE_SAMPLER
}LDKRHIBindingType;
LDKRHIColor
typedef struct LDKRHIColor{
float r;
float g;
float b;
float a;
}LDKRHIColor;
LDKRHIColorWriteMask
typedef enum LDKRHIColorWriteMask{
LDK_RHI_COLOR_WRITE_MASK_NONE=0,
LDK_RHI_COLOR_WRITE_MASK_R=1<<0,
LDK_RHI_COLOR_WRITE_MASK_G=1<<1,
LDK_RHI_COLOR_WRITE_MASK_B=1<<2,
LDK_RHI_COLOR_WRITE_MASK_A=1<<3,
LDK_RHI_COLOR_WRITE_MASK_ALL=LDK_RHI_COLOR_WRITE_MASK_R|LDK_RHI_COLOR_WRITE_MASK_G|LDK_RHI_COLOR_WRITE_MASK_B|LDK_RHI_COLOR_WRITE_MASK_A
}LDKRHIColorWriteMask;
LDKRHICompareOp
typedef enum LDKRHICompareOp{
LDK_RHI_COMPARE_OP_NEVER=0,
LDK_RHI_COMPARE_OP_LESS,
LDK_RHI_COMPARE_OP_LESS_EQUAL,
LDK_RHI_COMPARE_OP_EQUAL,
LDK_RHI_COMPARE_OP_GREATER,
LDK_RHI_COMPARE_OP_GREATER_EQUAL,
LDK_RHI_COMPARE_OP_NOT_EQUAL,
LDK_RHI_COMPARE_OP_ALWAYS
}LDKRHICompareOp;
LDKRHIContext
typedef struct LDKRHIContext LDKRHIContext;
LDKRHIContextDesc
typedef struct LDKRHIContextDesc{
LDKRHIBackendType backend_type;
void *backend_api;
void *backend_user_data;
}LDKRHIContextDesc;
LDKRHICullMode
typedef enum LDKRHICullMode{
LDK_RHI_CULL_MODE_NONE=0,
LDK_RHI_CULL_MODE_FRONT,
LDK_RHI_CULL_MODE_BACK
}LDKRHICullMode;
LDKRHIFilter
typedef enum LDKRHIFilter{
LDK_RHI_FILTER_NEAREST=0,
LDK_RHI_FILTER_LINEAR,
LDK_RHI_FILTER_NONE
}LDKRHIFilter;
LDKRHIFormat
typedef enum LDKRHIFormat{
LDK_RHI_FORMAT_INVALID=0,
LDK_RHI_FORMAT_R8_UNORM,
LDK_RHI_FORMAT_RG8_UNORM,
LDK_RHI_FORMAT_RGBA8_UNORM,
LDK_RHI_FORMAT_RGBA8_SRGB,
LDK_RHI_FORMAT_BGRA8_UNORM,
LDK_RHI_FORMAT_BGRA8_SRGB,
LDK_RHI_FORMAT_R16_UNORM,
LDK_RHI_FORMAT_RG16_UNORM,
LDK_RHI_FORMAT_RGBA16_UNORM,
LDK_RHI_FORMAT_R16_FLOAT,
LDK_RHI_FORMAT_RG16_FLOAT,
LDK_RHI_FORMAT_RGBA16_FLOAT,
LDK_RHI_FORMAT_R32_FLOAT,
LDK_RHI_FORMAT_RG32_FLOAT,
LDK_RHI_FORMAT_RGBA32_FLOAT,
LDK_RHI_FORMAT_D24S8,
LDK_RHI_FORMAT_D32_FLOAT
}LDKRHIFormat;
LDKRHIFrontFace
typedef enum LDKRHIFrontFace{
LDK_RHI_FRONT_FACE_CCW=0,
LDK_RHI_FRONT_FACE_CW
}LDKRHIFrontFace;
LDKRHIFunctions
typedef struct LDKRHIFunctions{
void(*shutdown)(void *backend_user_data);
LDKRHIBuffer(*buffer_create)(void *backend_user_data, const LDKRHIBufferDesc *desc);
void(*buffer_destroy)(void *backend_user_data, LDKRHIBuffer buffer);
bool(*buffer_update)(void *backend_user_data, LDKRHIBuffer buffer, uint32_t offset, uint32_t size, const void *data);
LDKRHITexture(*texture_create)(void *backend_user_data, const LDKRHITextureDesc *desc);
void(*texture_destroy)(void *backend_user_data, LDKRHITexture texture);
bool(*texture_update)(void *backend_user_data, LDKRHITexture texture, uint32_t mip_level, uint32_t layer, const void *data, uint32_t size);
LDKRHISampler(*create_sampler)(void *backend_user_data, const LDKRHISamplerDesc *desc);
void(*destroy_sampler)(void *backend_user_data, LDKRHISampler sampler);
LDKRHIShaderModule(*shader_module_create)(void *backend_user_data, const LDKRHIShaderModuleDesc *desc);
void(*shader_module_destroy)(void *backend_user_data, LDKRHIShaderModule shader_module);
LDKRHIBindingsLayout(*bindings_layout_create)(void *backend_user_data, const LDKRHIBindingsLayoutDesc *desc);
void(*bindings_layout_destroy)(void *backend_user_data, LDKRHIBindingsLayout bindings_layout);
LDKRHIPipeline(*pipeline_create)(void *backend_user_data, const LDKRHIPipelineDesc *desc);
void(*pipeline_destroy)(void *backend_user_data, LDKRHIPipeline pipeline);
LDKRHIBindings(*bindings_create)(void *backend_user_data, const LDKRHIBindingsDesc *desc);
void(*bindings_destroy)(void *backend_user_data, LDKRHIBindings bindings);
void(*frame_begin)(void *backend_user_data);
void(*frame_end)(void *backend_user_data);
LDKRHIFrameStats(*frame_stats_get)(void *backend_user_data);
void(*pass_begin)(void *backend_user_data, const LDKRHIPassDesc *desc);
void(*pass_end)(void *backend_user_data);
void(*pipeline_bind)(void *backend_user_data, LDKRHIPipeline pipeline);
void(*bindings_bind)(void *backend_user_data, LDKRHIBindings bindings);
void(*vertex_buffer_bind)(void *backend_user_data, LDKRHIBuffer buffer, uint32_t offset);
void(*vertex_buffer_bind_at)(void *backend_user_data, uint32_t slot, LDKRHIBuffer buffer, uint32_t offset);
void(*index_buffer_bind)(void *backend_user_data, LDKRHIBuffer buffer, uint32_t offset, LDKRHIIndexType index_type);
void(*viewport_set)(void *backend_user_data, const LDKRHIViewport *viewport);
void(*scissor_set)(void *backend_user_data, const LDKRHIRect *scissor);
void(*line_width_set)(void *backend_user_data, float line_width);
void(*draw)(void *backend_user_data, const LDKRHIDrawDesc *desc);
void(*draw_instanced)(void *backend_user_data, const LDKRHIDrawInstancedDesc *desc);
void(*draw_indexed)(void *backend_user_data, const LDKRHIDrawIndexedDesc *desc);
void(*draw_indexed_instanced)(void *backend_user_data, const LDKRHIDrawIndexedInstancedDesc *desc);
}LDKRHIFunctions;
LDKRHIIndexType
typedef enum LDKRHIIndexType{
LDK_RHI_INDEX_TYPE_UINT16=0,
LDK_RHI_INDEX_TYPE_UINT32
}LDKRHIIndexType;
LDKRHILoadOp
typedef enum LDKRHILoadOp{
LDK_RHI_LOAD_OP_LOAD=0,
LDK_RHI_LOAD_OP_CLEAR,
LDK_RHI_LOAD_OP_DONT_CARE
}LDKRHILoadOp;
LDKRHIMemoryUsage
typedef enum LDKRHIMemoryUsage{
LDK_RHI_MEMORY_USAGE_GPU=0,
LDK_RHI_MEMORY_USAGE_CPU_TO_GPU,
LDK_RHI_MEMORY_USAGE_GPU_TO_CPU
}LDKRHIMemoryUsage;
LDKRHIPolygonMode
typedef enum LDKRHIPolygonMode{
LDK_RHI_POLYGON_MODE_FILL=0,
LDK_RHI_POLYGON_MODE_LINE
}LDKRHIPolygonMode;
LDKRHIPrimitiveTopology
typedef enum LDKRHIPrimitiveTopology{
LDK_RHI_PRIMITIVE_TOPOLOGY_TRIANGLES=0,
LDK_RHI_PRIMITIVE_TOPOLOGY_LINES
}LDKRHIPrimitiveTopology;
LDKRHIRect
typedef struct LDKRHIRect{
int32_t x;
int32_t y;
int32_t width;
int32_t height;
}LDKRHIRect;
LDKRHIResource
typedef uintptr_t LDKRHIResource;
LDKRHIStoreOp
typedef enum LDKRHIStoreOp{
LDK_RHI_STORE_OP_STORE=0,
LDK_RHI_STORE_OP_DONT_CARE
}LDKRHIStoreOp;
LDKRHIVertexAttributeDesc
typedef struct LDKRHIVertexAttributeDesc{
uint32_t location;
LDKRHIVertexFormat format;
uint32_t offset;
}LDKRHIVertexAttributeDesc;
LDKRHIVertexFormat
typedef enum LDKRHIVertexFormat{
LDK_RHI_VERTEX_FORMAT_FLOAT=0,
LDK_RHI_VERTEX_FORMAT_FLOAT2,
LDK_RHI_VERTEX_FORMAT_FLOAT3,
LDK_RHI_VERTEX_FORMAT_FLOAT4,
LDK_RHI_VERTEX_FORMAT_UBYTE4_NORM
}LDKRHIVertexFormat;
LDKRHIVertexInputRate
typedef enum LDKRHIVertexInputRate{
LDK_RHI_VERTEX_INPUT_RATE_PER_VERTEX=0,
LDK_RHI_VERTEX_INPUT_RATE_PER_INSTANCE
}LDKRHIVertexInputRate;
LDKRHIWrap
typedef enum LDKRHIWrap{
LDK_RHI_WRAP_REPEAT=0,
LDK_RHI_WRAP_CLAMP_TO_EDGE,
LDK_RHI_WRAP_MIRROR,
LDK_RHI_WRAP_MIRRORED_REPEAT=LDK_RHI_WRAP_MIRROR
}LDKRHIWrap;
LDK_RHI_BINDING_MAX
#define LDK_RHI_BINDING_MAX 16
LDK_RHI_COLOR_ATTACHMENT_MAX
#define LDK_RHI_COLOR_ATTACHMENT_MAX 8
LDK_RHI_INVALID_RESOURCE
#define LDK_RHI_INVALID_RESOURCE 0
LDK_RHI_VERTEX_ATTRIBUTE_MAX
#define LDK_RHI_VERTEX_ATTRIBUTE_MAX 16