#![allow(missing_docs)]
use core::ffi::{c_char, c_void};
extern "C" {
pub fn mdl_object_retain(handle: *mut c_void) -> *mut c_void;
pub fn mdl_object_release(handle: *mut c_void);
pub fn mdl_asset_new_empty(
out_asset: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_asset_new_with_url(
path: *const c_char,
out_asset: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_asset_can_import_file_extension(path_extension: *const c_char) -> i32;
pub fn mdl_asset_can_export_file_extension(path_extension: *const c_char) -> i32;
pub fn mdl_asset_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_asset_count(handle: *mut c_void) -> u64;
pub fn mdl_asset_bounding_box(
handle: *mut c_void,
out_min_x: *mut f32,
out_min_y: *mut f32,
out_min_z: *mut f32,
out_max_x: *mut f32,
out_max_y: *mut f32,
out_max_z: *mut f32,
);
pub fn mdl_asset_bounding_box_at_time(
handle: *mut c_void,
time: f64,
out_min_x: *mut f32,
out_min_y: *mut f32,
out_min_z: *mut f32,
out_max_x: *mut f32,
out_max_y: *mut f32,
out_max_z: *mut f32,
);
pub fn mdl_asset_url_string(handle: *mut c_void) -> *mut c_char;
pub fn mdl_asset_object_at_index(handle: *mut c_void, index: u64) -> *mut c_void;
pub fn mdl_asset_mesh_at_index(handle: *mut c_void, index: u64) -> *mut c_void;
pub fn mdl_asset_object_at_path(handle: *mut c_void, path: *const c_char) -> *mut c_void;
pub fn mdl_asset_add_object(handle: *mut c_void, object: *mut c_void);
pub fn mdl_asset_remove_object(handle: *mut c_void, object: *mut c_void);
pub fn mdl_asset_load_textures(handle: *mut c_void);
pub fn mdl_asset_export_to_url(
handle: *mut c_void,
path: *const c_char,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_asset_frame_interval(handle: *mut c_void) -> f64;
pub fn mdl_asset_set_frame_interval(handle: *mut c_void, value: f64);
pub fn mdl_asset_start_time(handle: *mut c_void) -> f64;
pub fn mdl_asset_set_start_time(handle: *mut c_void, value: f64);
pub fn mdl_asset_end_time(handle: *mut c_void) -> f64;
pub fn mdl_asset_set_end_time(handle: *mut c_void, value: f64);
pub fn mdl_asset_up_axis(
handle: *mut c_void,
out_x: *mut f32,
out_y: *mut f32,
out_z: *mut f32,
);
pub fn mdl_asset_set_up_axis(handle: *mut c_void, x: f32, y: f32, z: f32);
pub fn mdl_mesh_new_box(
extent_x: f32,
extent_y: f32,
extent_z: f32,
segment_x: u32,
segment_y: u32,
segment_z: u32,
inward_normals: i32,
geometry_type: i32,
out_mesh: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_mesh_new_ellipsoid(
extent_x: f32,
extent_y: f32,
extent_z: f32,
segment_x: u32,
segment_y: u32,
inward_normals: i32,
hemisphere: i32,
geometry_type: i32,
out_mesh: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_mesh_new_cylinder(
extent_x: f32,
extent_y: f32,
extent_z: f32,
segment_x: u32,
segment_y: u32,
inward_normals: i32,
top_cap: i32,
bottom_cap: i32,
geometry_type: i32,
out_mesh: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_mesh_new_plane(
extent_x: f32,
extent_y: f32,
extent_z: f32,
segment_x: u32,
segment_y: u32,
geometry_type: i32,
out_mesh: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_mesh_new_icosahedron(
extent_x: f32,
extent_y: f32,
extent_z: f32,
inward_normals: i32,
geometry_type: i32,
out_mesh: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_mesh_vertex_count(handle: *mut c_void) -> u64;
pub fn mdl_mesh_vertex_buffer_count(handle: *mut c_void) -> u64;
pub fn mdl_mesh_vertex_buffer_at(handle: *mut c_void, index: u64) -> *mut c_void;
pub fn mdl_mesh_submesh_count(handle: *mut c_void) -> u64;
pub fn mdl_mesh_submesh_at(handle: *mut c_void, index: u64) -> *mut c_void;
pub fn mdl_mesh_bounding_box(
handle: *mut c_void,
out_min_x: *mut f32,
out_min_y: *mut f32,
out_min_z: *mut f32,
out_max_x: *mut f32,
out_max_y: *mut f32,
out_max_z: *mut f32,
);
pub fn mdl_mesh_vertex_descriptor(handle: *mut c_void) -> *mut c_void;
pub fn mdl_mesh_vertex_attribute_data(
handle: *mut c_void,
attribute_name: *const c_char,
) -> *mut c_void;
pub fn mdl_mesh_buffer_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_mesh_buffer_copy_bytes(
handle: *mut c_void,
out_bytes: *mut u8,
capacity: u64,
) -> u64;
pub fn mdl_vertex_attribute_data_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_vertex_attribute_data_copy_bytes(
handle: *mut c_void,
out_bytes: *mut u8,
capacity: u64,
) -> u64;
pub fn mdl_submesh_index_count(handle: *mut c_void) -> u64;
pub fn mdl_submesh_index_type(handle: *mut c_void) -> u32;
pub fn mdl_submesh_geometry_type(handle: *mut c_void) -> i32;
pub fn mdl_submesh_name_string(handle: *mut c_void) -> *mut c_char;
pub fn mdl_submesh_set_name(handle: *mut c_void, name: *const c_char);
pub fn mdl_submesh_index_buffer(handle: *mut c_void) -> *mut c_void;
pub fn mdl_submesh_index_buffer_as_type(handle: *mut c_void, index_type: u32) -> *mut c_void;
pub fn mdl_submesh_material(handle: *mut c_void) -> *mut c_void;
pub fn mdl_submesh_set_material(handle: *mut c_void, material: *mut c_void);
pub fn mdl_material_new(
name: *const c_char,
physically_plausible: i32,
out_material: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_material_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_material_count(handle: *mut c_void) -> u64;
pub fn mdl_material_name_string(handle: *mut c_void) -> *mut c_char;
pub fn mdl_material_material_face(handle: *mut c_void) -> u32;
pub fn mdl_material_set_material_face(handle: *mut c_void, face: u32);
pub fn mdl_material_remove_all_properties(handle: *mut c_void);
pub fn mdl_material_property_at(handle: *mut c_void, index: u64) -> *mut c_void;
pub fn mdl_material_property_named(
handle: *mut c_void,
property_name: *const c_char,
) -> *mut c_void;
pub fn mdl_material_property_with_semantic(handle: *mut c_void, semantic: u32) -> *mut c_void;
pub fn mdl_material_property_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_material_property_texture(handle: *mut c_void) -> *mut c_void;
pub fn mdl_material_property_set_float(handle: *mut c_void, value: f32);
pub fn mdl_material_property_set_float2(handle: *mut c_void, x: f32, y: f32);
pub fn mdl_material_property_set_float3(handle: *mut c_void, x: f32, y: f32, z: f32);
pub fn mdl_material_property_set_float4(handle: *mut c_void, x: f32, y: f32, z: f32, w: f32);
pub fn mdl_material_property_set_matrix4x4(handle: *mut c_void, values: *const f32);
pub fn mdl_material_property_set_string(handle: *mut c_void, value: *const c_char);
pub fn mdl_material_property_set_url(handle: *mut c_void, value: *const c_char);
pub fn mdl_material_property_set_color(
handle: *mut c_void,
red: f32,
green: f32,
blue: f32,
alpha: f32,
);
pub fn mdl_material_property_set_luminance(handle: *mut c_void, value: f32);
pub fn mdl_url_texture_new(
path: *const c_char,
name: *const c_char,
out_texture: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_checkerboard_texture_new(
divisions: f32,
name: *const c_char,
width: i32,
height: i32,
channel_count: u64,
channel_encoding: i32,
color1_r: f32,
color1_g: f32,
color1_b: f32,
color1_a: f32,
color2_r: f32,
color2_g: f32,
color2_b: f32,
color2_a: f32,
out_texture: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_texture_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_texture_write_to_url(
handle: *mut c_void,
path: *const c_char,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_texture_texel_data_length(handle: *mut c_void, top_left_origin: i32) -> u64;
pub fn mdl_texture_copy_texel_data(
handle: *mut c_void,
top_left_origin: i32,
out_bytes: *mut u8,
capacity: u64,
) -> u64;
pub fn mdl_object_new(out_object: *mut *mut c_void, out_error_message: *mut *mut c_char)
-> i32;
pub fn mdl_object_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_object_kind(handle: *mut c_void) -> i32;
pub fn mdl_object_name_string(handle: *mut c_void) -> *mut c_char;
pub fn mdl_object_set_name(handle: *mut c_void, name: *const c_char);
pub fn mdl_object_path_string(handle: *mut c_void) -> *mut c_char;
pub fn mdl_object_hidden(handle: *mut c_void) -> i32;
pub fn mdl_object_set_hidden(handle: *mut c_void, hidden: i32);
pub fn mdl_object_add_child(handle: *mut c_void, child: *mut c_void);
pub fn mdl_object_child_count(handle: *mut c_void) -> u64;
pub fn mdl_object_child_at(handle: *mut c_void, index: u64) -> *mut c_void;
pub fn mdl_object_at_path(handle: *mut c_void, path: *const c_char) -> *mut c_void;
pub fn mdl_object_bounding_box_at_time(
handle: *mut c_void,
time: f64,
out_min_x: *mut f32,
out_min_y: *mut f32,
out_min_z: *mut f32,
out_max_x: *mut f32,
out_max_y: *mut f32,
out_max_z: *mut f32,
);
pub fn mdl_light_new(out_light: *mut *mut c_void, out_error_message: *mut *mut c_char) -> i32;
pub fn mdl_light_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_light_set_light_type(handle: *mut c_void, raw_value: u32);
pub fn mdl_light_set_color_space(handle: *mut c_void, color_space: *const c_char);
pub fn mdl_light_irradiance_at_point(
handle: *mut c_void,
x: f32,
y: f32,
z: f32,
out_r: *mut f32,
out_g: *mut f32,
out_b: *mut f32,
out_a: *mut f32,
);
pub fn mdl_physically_plausible_light_new(
out_light: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_physically_plausible_light_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_physically_plausible_light_set_color_temperature(
handle: *mut c_void,
temperature: f32,
);
pub fn mdl_physically_plausible_light_set_color(
handle: *mut c_void,
red: f32,
green: f32,
blue: f32,
alpha: f32,
);
pub fn mdl_physically_plausible_light_set_lumens(handle: *mut c_void, lumens: f32);
pub fn mdl_physically_plausible_light_set_inner_cone_angle(handle: *mut c_void, angle: f32);
pub fn mdl_physically_plausible_light_set_outer_cone_angle(handle: *mut c_void, angle: f32);
pub fn mdl_physically_plausible_light_set_attenuation_start_distance(
handle: *mut c_void,
distance: f32,
);
pub fn mdl_physically_plausible_light_set_attenuation_end_distance(
handle: *mut c_void,
distance: f32,
);
pub fn mdl_camera_new(out_camera: *mut *mut c_void, out_error_message: *mut *mut c_char)
-> i32;
pub fn mdl_camera_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_camera_set_projection(handle: *mut c_void, raw_value: u32);
pub fn mdl_camera_set_near_visibility_distance(handle: *mut c_void, value: f32);
pub fn mdl_camera_set_far_visibility_distance(handle: *mut c_void, value: f32);
pub fn mdl_camera_set_world_to_meters_conversion_scale(handle: *mut c_void, value: f32);
pub fn mdl_camera_set_focal_length(handle: *mut c_void, value: f32);
pub fn mdl_camera_set_focus_distance(handle: *mut c_void, value: f32);
pub fn mdl_camera_set_field_of_view(handle: *mut c_void, value: f32);
pub fn mdl_camera_look_at(handle: *mut c_void, x: f32, y: f32, z: f32);
pub fn mdl_camera_look_at_from(
handle: *mut c_void,
focus_x: f32,
focus_y: f32,
focus_z: f32,
camera_x: f32,
camera_y: f32,
camera_z: f32,
);
pub fn mdl_camera_frame_bounding_box(
handle: *mut c_void,
min_x: f32,
min_y: f32,
min_z: f32,
max_x: f32,
max_y: f32,
max_z: f32,
set_near_and_far: i32,
);
pub fn mdl_camera_ray_to(
handle: *mut c_void,
pixel_x: i32,
pixel_y: i32,
viewport_width: i32,
viewport_height: i32,
out_x: *mut f32,
out_y: *mut f32,
out_z: *mut f32,
);
pub fn mdl_camera_bokeh_kernel(handle: *mut c_void, width: i32, height: i32) -> *mut c_void;
pub fn mdl_voxel_array_new_with_indices(
values: *const i32,
count: u64,
min_x: f32,
min_y: f32,
min_z: f32,
max_x: f32,
max_y: f32,
max_z: f32,
voxel_extent: f32,
out_voxel_array: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_voxel_array_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_voxel_array_count(handle: *mut c_void) -> u64;
pub fn mdl_voxel_array_set_voxel(handle: *mut c_void, x: i32, y: i32, z: i32, shell: i32);
pub fn mdl_voxel_array_voxel_exists(
handle: *mut c_void,
x: i32,
y: i32,
z: i32,
shell: i32,
allow_any_x: i32,
allow_any_y: i32,
allow_any_z: i32,
allow_any_shell: i32,
) -> i32;
pub fn mdl_voxel_array_copy_indices(
handle: *mut c_void,
out_values: *mut i32,
capacity_indices: u64,
) -> u64;
pub fn mdl_voxel_array_copy_voxels_within_extent(
handle: *mut c_void,
min_x: i32,
min_y: i32,
min_z: i32,
min_shell: i32,
max_x: i32,
max_y: i32,
max_z: i32,
max_shell: i32,
out_values: *mut i32,
capacity_indices: u64,
) -> u64;
pub fn mdl_voxel_array_union(handle: *mut c_void, other: *mut c_void);
pub fn mdl_voxel_array_intersect(handle: *mut c_void, other: *mut c_void);
pub fn mdl_voxel_array_difference(handle: *mut c_void, other: *mut c_void);
pub fn mdl_voxel_array_index_of_spatial_location(
handle: *mut c_void,
x: f32,
y: f32,
z: f32,
out_values: *mut i32,
);
pub fn mdl_voxel_array_spatial_location_of_index(
handle: *mut c_void,
x: i32,
y: i32,
z: i32,
shell: i32,
out_x: *mut f32,
out_y: *mut f32,
out_z: *mut f32,
);
pub fn mdl_voxel_array_voxel_bounding_box_at_index(
handle: *mut c_void,
x: i32,
y: i32,
z: i32,
shell: i32,
out_min_x: *mut f32,
out_min_y: *mut f32,
out_min_z: *mut f32,
out_max_x: *mut f32,
out_max_y: *mut f32,
out_max_z: *mut f32,
);
pub fn mdl_voxel_array_convert_to_signed_shell_field(handle: *mut c_void);
pub fn mdl_voxel_array_set_shell_field_interior_thickness(handle: *mut c_void, value: f32);
pub fn mdl_voxel_array_set_shell_field_exterior_thickness(handle: *mut c_void, value: f32);
pub fn mdl_voxel_array_coarse_mesh(handle: *mut c_void) -> *mut c_void;
pub fn mdl_voxel_array_mesh(handle: *mut c_void) -> *mut c_void;
pub fn mdl_animated_value_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_animated_value_clear(handle: *mut c_void);
pub fn mdl_animated_value_set_interpolation(handle: *mut c_void, raw_value: u32);
pub fn mdl_animated_scalar_new(
out_value: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_animated_scalar_set_float(handle: *mut c_void, value: f32, time: f64);
pub fn mdl_animated_scalar_float_value(handle: *mut c_void, time: f64) -> f32;
pub fn mdl_animated_vector2_new(
out_value: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_animated_vector2_set_float2(handle: *mut c_void, x: f32, y: f32, time: f64);
pub fn mdl_animated_vector2_copy_float2_value(
handle: *mut c_void,
time: f64,
out_x: *mut f32,
out_y: *mut f32,
);
pub fn mdl_animated_vector3_new(
out_value: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_animated_vector3_set_float3(handle: *mut c_void, x: f32, y: f32, z: f32, time: f64);
pub fn mdl_animated_vector3_copy_float3_value(
handle: *mut c_void,
time: f64,
out_x: *mut f32,
out_y: *mut f32,
out_z: *mut f32,
);
pub fn mdl_animated_vector4_new(
out_value: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_animated_vector4_set_float4(
handle: *mut c_void,
x: f32,
y: f32,
z: f32,
w: f32,
time: f64,
);
pub fn mdl_animated_vector4_copy_float4_value(
handle: *mut c_void,
time: f64,
out_x: *mut f32,
out_y: *mut f32,
out_z: *mut f32,
out_w: *mut f32,
);
pub fn mdl_animated_quaternion_new(
out_value: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_animated_quaternion_set_float(
handle: *mut c_void,
x: f32,
y: f32,
z: f32,
w: f32,
time: f64,
);
pub fn mdl_animated_quaternion_copy_float_value(
handle: *mut c_void,
time: f64,
out_values: *mut f32,
);
pub fn mdl_animated_matrix4x4_new(
out_value: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_animated_matrix4x4_set_float(handle: *mut c_void, values: *const f32, time: f64);
pub fn mdl_animated_matrix4x4_copy_float_value(
handle: *mut c_void,
time: f64,
out_values: *mut f32,
);
pub fn mdl_animated_scalar_array_new(
element_count: u64,
out_value: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_animated_scalar_array_set_float(
handle: *mut c_void,
values: *const f32,
count: u64,
time: f64,
);
pub fn mdl_animated_scalar_array_copy_float_at_time(
handle: *mut c_void,
time: f64,
out_values: *mut f32,
capacity: u64,
) -> u64;
pub fn mdl_animated_vector3_array_new(
element_count: u64,
out_value: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_animated_vector3_array_set_float(
handle: *mut c_void,
values: *const f32,
count: u64,
time: f64,
);
pub fn mdl_animated_vector3_array_copy_float_at_time(
handle: *mut c_void,
time: f64,
out_values: *mut f32,
capacity_elements: u64,
) -> u64;
pub fn mdl_animated_quaternion_array_new(
element_count: u64,
out_value: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_animated_quaternion_array_set_float(
handle: *mut c_void,
values: *const f32,
count: u64,
time: f64,
);
pub fn mdl_animated_quaternion_array_copy_float_at_time(
handle: *mut c_void,
time: f64,
out_values: *mut f32,
capacity_elements: u64,
) -> u64;
pub fn mdl_packed_joint_animation_new(
name: *const c_char,
joint_paths: *const *const c_char,
joint_path_count: u64,
out_animation: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_packed_joint_animation_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_packed_joint_animation_translations(handle: *mut c_void) -> *mut c_void;
pub fn mdl_packed_joint_animation_rotations(handle: *mut c_void) -> *mut c_void;
pub fn mdl_packed_joint_animation_scales(handle: *mut c_void) -> *mut c_void;
pub fn mdl_animation_bind_component_new(
out_component: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_animation_bind_component_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_animation_bind_component_set_skeleton(handle: *mut c_void, skeleton: *mut c_void);
pub fn mdl_animation_bind_component_skeleton(handle: *mut c_void) -> *mut c_void;
pub fn mdl_animation_bind_component_set_packed_joint_animation(
handle: *mut c_void,
animation: *mut c_void,
);
pub fn mdl_animation_bind_component_packed_joint_animation(handle: *mut c_void) -> *mut c_void;
pub fn mdl_animation_bind_component_set_joint_paths(
handle: *mut c_void,
joint_paths: *const *const c_char,
joint_path_count: u64,
);
pub fn mdl_animation_bind_component_set_geometry_bind_transform(
handle: *mut c_void,
values: *const f32,
);
pub fn mdl_skeleton_new(
name: *const c_char,
joint_paths: *const *const c_char,
joint_path_count: u64,
out_skeleton: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_skeleton_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_skeleton_copy_joint_bind_transforms(
handle: *mut c_void,
out_values: *mut f32,
capacity_matrices: u64,
) -> u64;
pub fn mdl_skeleton_copy_joint_rest_transforms(
handle: *mut c_void,
out_values: *mut f32,
capacity_matrices: u64,
) -> u64;
pub fn mdl_vertex_attribute_new(
name: *const c_char,
format: u32,
offset: u64,
buffer_index: u64,
out_attribute: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_vertex_attribute_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_vertex_attribute_set_name(handle: *mut c_void, name: *const c_char);
pub fn mdl_vertex_attribute_set_format(handle: *mut c_void, raw_value: u32);
pub fn mdl_vertex_attribute_set_offset(handle: *mut c_void, offset: u64);
pub fn mdl_vertex_attribute_set_buffer_index(handle: *mut c_void, buffer_index: u64);
pub fn mdl_vertex_attribute_set_time(handle: *mut c_void, time: f64);
pub fn mdl_vertex_attribute_set_initialization_value(
handle: *mut c_void,
x: f32,
y: f32,
z: f32,
w: f32,
);
pub fn mdl_vertex_descriptor_new_copy(
handle: *mut c_void,
out_descriptor: *mut *mut c_void,
out_error_message: *mut *mut c_char,
) -> i32;
pub fn mdl_vertex_descriptor_info_json(handle: *mut c_void) -> *mut c_char;
pub fn mdl_vertex_descriptor_attribute_count(handle: *mut c_void) -> u64;
pub fn mdl_vertex_descriptor_attribute_at(handle: *mut c_void, index: u64) -> *mut c_void;
pub fn mdl_vertex_descriptor_attribute_named(
handle: *mut c_void,
name: *const c_char,
) -> *mut c_void;
pub fn mdl_vertex_descriptor_reset(handle: *mut c_void);
pub fn mdl_vertex_descriptor_set_packed_offsets(handle: *mut c_void);
pub fn mdl_vertex_descriptor_set_packed_strides(handle: *mut c_void);
}
pub mod status {
pub const OK: i32 = 0;
pub const INVALID_ARGUMENT: i32 = -1;
pub const NULL_RESULT: i32 = -2;
pub const FRAMEWORK: i32 = -3;
}