HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
cgltf.h File Reference
#include <stddef.h>
+ Include dependency graph for cgltf.h:

Go to the source code of this file.

Classes

struct  cgltf_memory_options
 
struct  cgltf_file_options
 
struct  cgltf_options
 
struct  cgltf_extras
 
struct  cgltf_extension
 
struct  cgltf_buffer
 
struct  cgltf_meshopt_compression
 
struct  cgltf_buffer_view
 
struct  cgltf_accessor_sparse
 
struct  cgltf_accessor
 
struct  cgltf_attribute
 
struct  cgltf_image
 
struct  cgltf_sampler
 
struct  cgltf_texture
 
struct  cgltf_texture_transform
 
struct  cgltf_texture_view
 
struct  cgltf_pbr_metallic_roughness
 
struct  cgltf_pbr_specular_glossiness
 
struct  cgltf_clearcoat
 
struct  cgltf_transmission
 
struct  cgltf_ior
 
struct  cgltf_specular
 
struct  cgltf_volume
 
struct  cgltf_sheen
 
struct  cgltf_emissive_strength
 
struct  cgltf_iridescence
 
struct  cgltf_material
 
struct  cgltf_material_mapping
 
struct  cgltf_morph_target
 
struct  cgltf_draco_mesh_compression
 
struct  cgltf_mesh_gpu_instancing
 
struct  cgltf_primitive
 
struct  cgltf_mesh
 
struct  cgltf_skin
 
struct  cgltf_camera_perspective
 
struct  cgltf_camera_orthographic
 
struct  cgltf_camera
 
struct  cgltf_light
 
struct  cgltf_node
 
struct  cgltf_scene
 
struct  cgltf_animation_sampler
 
struct  cgltf_animation_channel
 
struct  cgltf_animation
 
struct  cgltf_material_variant
 
struct  cgltf_asset
 
struct  cgltf_data
 

Typedefs

typedef size_t cgltf_size
 
typedef long long int cgltf_ssize
 
typedef float cgltf_float
 
typedef int cgltf_int
 
typedef unsigned int cgltf_uint
 
typedef int cgltf_bool
 
typedef enum cgltf_file_type cgltf_file_type
 
typedef enum cgltf_result cgltf_result
 
typedef struct cgltf_memory_options cgltf_memory_options
 
typedef struct cgltf_file_options cgltf_file_options
 
typedef struct cgltf_options cgltf_options
 
typedef enum cgltf_buffer_view_type cgltf_buffer_view_type
 
typedef enum cgltf_attribute_type cgltf_attribute_type
 
typedef enum cgltf_component_type cgltf_component_type
 
typedef enum cgltf_type cgltf_type
 
typedef enum cgltf_primitive_type cgltf_primitive_type
 
typedef enum cgltf_alpha_mode cgltf_alpha_mode
 
typedef enum
cgltf_animation_path_type 
cgltf_animation_path_type
 
typedef enum
cgltf_interpolation_type 
cgltf_interpolation_type
 
typedef enum cgltf_camera_type cgltf_camera_type
 
typedef enum cgltf_light_type cgltf_light_type
 
typedef enum cgltf_data_free_method cgltf_data_free_method
 
typedef struct cgltf_extras cgltf_extras
 
typedef struct cgltf_extension cgltf_extension
 
typedef struct cgltf_buffer cgltf_buffer
 
typedef enum
cgltf_meshopt_compression_mode 
cgltf_meshopt_compression_mode
 
typedef enum
cgltf_meshopt_compression_filter 
cgltf_meshopt_compression_filter
 
typedef struct
cgltf_meshopt_compression 
cgltf_meshopt_compression
 
typedef struct cgltf_buffer_view cgltf_buffer_view
 
typedef struct
cgltf_accessor_sparse 
cgltf_accessor_sparse
 
typedef struct cgltf_accessor cgltf_accessor
 
typedef struct cgltf_attribute cgltf_attribute
 
typedef struct cgltf_image cgltf_image
 
typedef struct cgltf_sampler cgltf_sampler
 
typedef struct cgltf_texture cgltf_texture
 
typedef struct
cgltf_texture_transform 
cgltf_texture_transform
 
typedef struct cgltf_texture_view cgltf_texture_view
 
typedef struct
cgltf_pbr_metallic_roughness 
cgltf_pbr_metallic_roughness
 
typedef struct
cgltf_pbr_specular_glossiness 
cgltf_pbr_specular_glossiness
 
typedef struct cgltf_clearcoat cgltf_clearcoat
 
typedef struct cgltf_transmission cgltf_transmission
 
typedef struct cgltf_ior cgltf_ior
 
typedef struct cgltf_specular cgltf_specular
 
typedef struct cgltf_volume cgltf_volume
 
typedef struct cgltf_sheen cgltf_sheen
 
typedef struct
cgltf_emissive_strength 
cgltf_emissive_strength
 
typedef struct cgltf_iridescence cgltf_iridescence
 
typedef struct cgltf_material cgltf_material
 
typedef struct
cgltf_material_mapping 
cgltf_material_mapping
 
typedef struct cgltf_morph_target cgltf_morph_target
 
typedef struct
cgltf_draco_mesh_compression 
cgltf_draco_mesh_compression
 
typedef struct
cgltf_mesh_gpu_instancing 
cgltf_mesh_gpu_instancing
 
typedef struct cgltf_primitive cgltf_primitive
 
typedef struct cgltf_mesh cgltf_mesh
 
typedef struct cgltf_node cgltf_node
 
typedef struct cgltf_skin cgltf_skin
 
typedef struct
cgltf_camera_perspective 
cgltf_camera_perspective
 
typedef struct
cgltf_camera_orthographic 
cgltf_camera_orthographic
 
typedef struct cgltf_camera cgltf_camera
 
typedef struct cgltf_light cgltf_light
 
typedef struct cgltf_scene cgltf_scene
 
typedef struct
cgltf_animation_sampler 
cgltf_animation_sampler
 
typedef struct
cgltf_animation_channel 
cgltf_animation_channel
 
typedef struct cgltf_animation cgltf_animation
 
typedef struct
cgltf_material_variant 
cgltf_material_variant
 
typedef struct cgltf_asset cgltf_asset
 
typedef struct cgltf_data cgltf_data
 

Enumerations

enum  cgltf_file_type { cgltf_file_type_invalid, cgltf_file_type_gltf, cgltf_file_type_glb, cgltf_file_type_max_enum }
 
enum  cgltf_result {
  cgltf_result_success, cgltf_result_data_too_short, cgltf_result_unknown_format, cgltf_result_invalid_json,
  cgltf_result_invalid_gltf, cgltf_result_invalid_options, cgltf_result_file_not_found, cgltf_result_io_error,
  cgltf_result_out_of_memory, cgltf_result_legacy_gltf, cgltf_result_max_enum
}
 
enum  cgltf_buffer_view_type { cgltf_buffer_view_type_invalid, cgltf_buffer_view_type_indices, cgltf_buffer_view_type_vertices, cgltf_buffer_view_type_max_enum }
 
enum  cgltf_attribute_type {
  cgltf_attribute_type_invalid, cgltf_attribute_type_position, cgltf_attribute_type_normal, cgltf_attribute_type_tangent,
  cgltf_attribute_type_texcoord, cgltf_attribute_type_color, cgltf_attribute_type_joints, cgltf_attribute_type_weights,
  cgltf_attribute_type_custom, cgltf_attribute_type_max_enum
}
 
enum  cgltf_component_type {
  cgltf_component_type_invalid, cgltf_component_type_r_8, cgltf_component_type_r_8u, cgltf_component_type_r_16,
  cgltf_component_type_r_16u, cgltf_component_type_r_32u, cgltf_component_type_r_32f, cgltf_component_type_max_enum
}
 
enum  cgltf_type {
  cgltf_type_invalid, cgltf_type_scalar, cgltf_type_vec2, cgltf_type_vec3,
  cgltf_type_vec4, cgltf_type_mat2, cgltf_type_mat3, cgltf_type_mat4,
  cgltf_type_max_enum
}
 
enum  cgltf_primitive_type {
  cgltf_primitive_type_points, cgltf_primitive_type_lines, cgltf_primitive_type_line_loop, cgltf_primitive_type_line_strip,
  cgltf_primitive_type_triangles, cgltf_primitive_type_triangle_strip, cgltf_primitive_type_triangle_fan, cgltf_primitive_type_max_enum
}
 
enum  cgltf_alpha_mode { cgltf_alpha_mode_opaque, cgltf_alpha_mode_mask, cgltf_alpha_mode_blend, cgltf_alpha_mode_max_enum }
 
enum  cgltf_animation_path_type {
  cgltf_animation_path_type_invalid, cgltf_animation_path_type_translation, cgltf_animation_path_type_rotation, cgltf_animation_path_type_scale,
  cgltf_animation_path_type_weights, cgltf_animation_path_type_max_enum
}
 
enum  cgltf_interpolation_type { cgltf_interpolation_type_linear, cgltf_interpolation_type_step, cgltf_interpolation_type_cubic_spline, cgltf_interpolation_type_max_enum }
 
enum  cgltf_camera_type { cgltf_camera_type_invalid, cgltf_camera_type_perspective, cgltf_camera_type_orthographic, cgltf_camera_type_max_enum }
 
enum  cgltf_light_type {
  cgltf_light_type_invalid, cgltf_light_type_directional, cgltf_light_type_point, cgltf_light_type_spot,
  cgltf_light_type_max_enum
}
 
enum  cgltf_data_free_method { cgltf_data_free_method_none, cgltf_data_free_method_file_release, cgltf_data_free_method_memory_free, cgltf_data_free_method_max_enum }
 
enum  cgltf_meshopt_compression_mode {
  cgltf_meshopt_compression_mode_invalid, cgltf_meshopt_compression_mode_attributes, cgltf_meshopt_compression_mode_triangles, cgltf_meshopt_compression_mode_indices,
  cgltf_meshopt_compression_mode_max_enum
}
 
enum  cgltf_meshopt_compression_filter {
  cgltf_meshopt_compression_filter_none, cgltf_meshopt_compression_filter_octahedral, cgltf_meshopt_compression_filter_quaternion, cgltf_meshopt_compression_filter_exponential,
  cgltf_meshopt_compression_filter_max_enum
}
 

Functions

cgltf_result cgltf_parse (const cgltf_options *options, const void *data, cgltf_size size, cgltf_data **out_data)
 
cgltf_result cgltf_parse_file (const cgltf_options *options, const char *path, cgltf_data **out_data)
 
cgltf_result cgltf_load_buffers (const cgltf_options *options, cgltf_data *data, const char *gltf_path)
 
cgltf_result cgltf_load_buffer_base64 (const cgltf_options *options, cgltf_size size, const char *base64, void **out_data)
 
cgltf_size cgltf_decode_string (char *string)
 
cgltf_size cgltf_decode_uri (char *uri)
 
cgltf_result cgltf_validate (cgltf_data *data)
 
void cgltf_free (cgltf_data *data)
 
void cgltf_node_transform_local (const cgltf_node *node, cgltf_float *out_matrix)
 
void cgltf_node_transform_world (const cgltf_node *node, cgltf_float *out_matrix)
 
cgltf_bool cgltf_accessor_read_float (const cgltf_accessor *accessor, cgltf_size index, cgltf_float *out, cgltf_size element_size)
 
cgltf_bool cgltf_accessor_read_uint (const cgltf_accessor *accessor, cgltf_size index, cgltf_uint *out, cgltf_size element_size)
 
cgltf_size cgltf_accessor_read_index (const cgltf_accessor *accessor, cgltf_size index)
 
cgltf_size cgltf_num_components (cgltf_type type)
 
cgltf_size cgltf_accessor_unpack_floats (const cgltf_accessor *accessor, cgltf_float *out, cgltf_size float_count)
 
cgltf_result cgltf_copy_extras_json (const cgltf_data *data, const cgltf_extras *extras, char *dest, cgltf_size *dest_size)
 

Typedef Documentation

typedef struct cgltf_asset cgltf_asset
typedef int cgltf_bool

Definition at line 106 of file cgltf.h.

typedef struct cgltf_buffer cgltf_buffer
typedef struct cgltf_camera cgltf_camera
typedef struct cgltf_data cgltf_data
typedef struct cgltf_extras cgltf_extras
typedef float cgltf_float

Definition at line 103 of file cgltf.h.

typedef struct cgltf_image cgltf_image
typedef int cgltf_int

Definition at line 104 of file cgltf.h.

typedef struct cgltf_ior cgltf_ior
typedef struct cgltf_light cgltf_light
typedef struct cgltf_mesh cgltf_mesh
typedef struct cgltf_node cgltf_node

Definition at line 599 of file cgltf.h.

typedef struct cgltf_options cgltf_options
typedef enum cgltf_result cgltf_result
typedef struct cgltf_sampler cgltf_sampler
typedef struct cgltf_scene cgltf_scene
typedef struct cgltf_sheen cgltf_sheen
typedef size_t cgltf_size

cgltf - a single-file glTF 2.0 parser written in C99.

Version: 1.13

Website: https://github.com/jkuhlmann/cgltf

Distributed under the MIT License, see notice at the end of this file.

Building: Include this file where you need the struct and function declarations. Have exactly one source file where you define CGLTF_IMPLEMENTATION before including this file to get the function definitions.

Reference: cgltf_result cgltf_parse(const cgltf_options*, const void*, cgltf_size, cgltf_data**) parses both glTF and GLB data. If this function returns cgltf_result_success, you have to call cgltf_free() on the created cgltf_data* variable. Note that contents of external files for buffers and images are not automatically loaded. You'll need to read these files yourself using URIs in the cgltf_data structure.

cgltf_options is the struct passed to cgltf_parse() to control parts of the parsing process. You can use it to force the file type and provide memory allocation as well as file operation callbacks. Should be zero-initialized to trigger default behavior.

cgltf_data is the struct allocated and filled by cgltf_parse(). It generally mirrors the glTF format as described by the spec (see https://github.com/KhronosGroup/glTF/tree/master/specification/2.0).

void cgltf_free(cgltf_data*) frees the allocated cgltf_data variable.

cgltf_result cgltf_load_buffers(const cgltf_options*, cgltf_data*, const char* gltf_path) can be optionally called to open and read buffer files using the FILE* APIs. The gltf_path argument is the path to the original glTF file, which allows the parser to resolve the path to buffer files.

cgltf_result cgltf_load_buffer_base64(const cgltf_options* options, cgltf_size size, const char* base64, void** out_data) decodes base64-encoded data content. Used internally by cgltf_load_buffers(). This is useful when decoding data URIs in images.

cgltf_result cgltf_parse_file(const cgltf_options* options, const char* path, cgltf_data** out_data) can be used to open the given file using FILE* APIs and parse the data using cgltf_parse().

cgltf_result cgltf_validate(cgltf_data*) can be used to do additional checks to make sure the parsed glTF data is valid.

cgltf_node_transform_local converts the translation / rotation / scale properties of a node into a mat4.

cgltf_node_transform_world calls cgltf_node_transform_local on every ancestor in order to compute the root-to-node transformation.

cgltf_accessor_unpack_floats reads in the data from an accessor, applies sparse data (if any), and converts them to floating point. Assumes that cgltf_load_buffers has already been called. By passing null for the output pointer, users can find out how many floats are required in the output buffer.

cgltf_num_components is a tiny utility that tells you the dimensionality of a certain accessor type. This can be used before cgltf_accessor_unpack_floats to help allocate the necessary amount of memory.

cgltf_accessor_read_float reads a certain element from a non-sparse accessor and converts it to floating point, assuming that cgltf_load_buffers has already been called. The passed-in element size is the number of floats in the output buffer, which should be in the range [1, 16]. Returns false if the passed-in element_size is too small, or if the accessor is sparse.

cgltf_accessor_read_uint is similar to its floating-point counterpart, but limited to reading vector types and does not support matrix types. The passed-in element size is the number of uints in the output buffer, which should be in the range [1, 4]. Returns false if the passed-in element_size is too small, or if the accessor is sparse.

cgltf_accessor_read_index is similar to its floating-point counterpart, but it returns size_t and only works with single-component data types.

cgltf_result cgltf_copy_extras_json(const cgltf_data*, const cgltf_extras*, char* dest, cgltf_size* dest_size) allows users to retrieve the "extras" data that can be attached to many glTF objects (which can be arbitrary JSON data). The cgltf_extras struct stores the offsets of the start and end of the extras JSON data as it appears in the complete glTF JSON data. This function copies the extras data into the provided buffer. If dest is NULL, the length of the data is written into dest_size. You can then parse this data using your own JSON parser or, if you've included the cgltf implementation using the integrated JSMN JSON parser.

Definition at line 101 of file cgltf.h.

typedef struct cgltf_skin cgltf_skin
typedef long long int cgltf_ssize

Definition at line 102 of file cgltf.h.

typedef struct cgltf_texture cgltf_texture
typedef enum cgltf_type cgltf_type
typedef unsigned int cgltf_uint

Definition at line 105 of file cgltf.h.

typedef struct cgltf_volume cgltf_volume

Enumeration Type Documentation

Enumerator
cgltf_alpha_mode_opaque 
cgltf_alpha_mode_mask 
cgltf_alpha_mode_blend 
cgltf_alpha_mode_max_enum 

Definition at line 212 of file cgltf.h.

Enumerator
cgltf_animation_path_type_invalid 
cgltf_animation_path_type_translation 
cgltf_animation_path_type_rotation 
cgltf_animation_path_type_scale 
cgltf_animation_path_type_weights 
cgltf_animation_path_type_max_enum 

Definition at line 220 of file cgltf.h.

Enumerator
cgltf_attribute_type_invalid 
cgltf_attribute_type_position 
cgltf_attribute_type_normal 
cgltf_attribute_type_tangent 
cgltf_attribute_type_texcoord 
cgltf_attribute_type_color 
cgltf_attribute_type_joints 
cgltf_attribute_type_weights 
cgltf_attribute_type_custom 
cgltf_attribute_type_max_enum 

Definition at line 161 of file cgltf.h.

Enumerator
cgltf_buffer_view_type_invalid 
cgltf_buffer_view_type_indices 
cgltf_buffer_view_type_vertices 
cgltf_buffer_view_type_max_enum 

Definition at line 153 of file cgltf.h.

Enumerator
cgltf_camera_type_invalid 
cgltf_camera_type_perspective 
cgltf_camera_type_orthographic 
cgltf_camera_type_max_enum 

Definition at line 236 of file cgltf.h.

Enumerator
cgltf_component_type_invalid 
cgltf_component_type_r_8 
cgltf_component_type_r_8u 
cgltf_component_type_r_16 
cgltf_component_type_r_16u 
cgltf_component_type_r_32u 
cgltf_component_type_r_32f 
cgltf_component_type_max_enum 

Definition at line 175 of file cgltf.h.

Enumerator
cgltf_data_free_method_none 
cgltf_data_free_method_file_release 
cgltf_data_free_method_memory_free 
cgltf_data_free_method_max_enum 

Definition at line 251 of file cgltf.h.

Enumerator
cgltf_file_type_invalid 
cgltf_file_type_gltf 
cgltf_file_type_glb 
cgltf_file_type_max_enum 

Definition at line 108 of file cgltf.h.

Enumerator
cgltf_interpolation_type_linear 
cgltf_interpolation_type_step 
cgltf_interpolation_type_cubic_spline 
cgltf_interpolation_type_max_enum 

Definition at line 229 of file cgltf.h.

Enumerator
cgltf_light_type_invalid 
cgltf_light_type_directional 
cgltf_light_type_point 
cgltf_light_type_spot 
cgltf_light_type_max_enum 

Definition at line 243 of file cgltf.h.

Enumerator
cgltf_meshopt_compression_filter_none 
cgltf_meshopt_compression_filter_octahedral 
cgltf_meshopt_compression_filter_quaternion 
cgltf_meshopt_compression_filter_exponential 
cgltf_meshopt_compression_filter_max_enum 

Definition at line 288 of file cgltf.h.

Enumerator
cgltf_meshopt_compression_mode_invalid 
cgltf_meshopt_compression_mode_attributes 
cgltf_meshopt_compression_mode_triangles 
cgltf_meshopt_compression_mode_indices 
cgltf_meshopt_compression_mode_max_enum 

Definition at line 280 of file cgltf.h.

Enumerator
cgltf_primitive_type_points 
cgltf_primitive_type_lines 
cgltf_primitive_type_line_loop 
cgltf_primitive_type_line_strip 
cgltf_primitive_type_triangles 
cgltf_primitive_type_triangle_strip 
cgltf_primitive_type_triangle_fan 
cgltf_primitive_type_max_enum 

Definition at line 200 of file cgltf.h.

Enumerator
cgltf_result_success 
cgltf_result_data_too_short 
cgltf_result_unknown_format 
cgltf_result_invalid_json 
cgltf_result_invalid_gltf 
cgltf_result_invalid_options 
cgltf_result_file_not_found 
cgltf_result_io_error 
cgltf_result_out_of_memory 
cgltf_result_legacy_gltf 
cgltf_result_max_enum 

Definition at line 116 of file cgltf.h.

enum cgltf_type
Enumerator
cgltf_type_invalid 
cgltf_type_scalar 
cgltf_type_vec2 
cgltf_type_vec3 
cgltf_type_vec4 
cgltf_type_mat2 
cgltf_type_mat3 
cgltf_type_mat4 
cgltf_type_max_enum 

Definition at line 187 of file cgltf.h.

Function Documentation

cgltf_bool cgltf_accessor_read_float ( const cgltf_accessor accessor,
cgltf_size  index,
cgltf_float out,
cgltf_size  element_size 
)
cgltf_size cgltf_accessor_read_index ( const cgltf_accessor accessor,
cgltf_size  index 
)
cgltf_bool cgltf_accessor_read_uint ( const cgltf_accessor accessor,
cgltf_size  index,
cgltf_uint out,
cgltf_size  element_size 
)
cgltf_size cgltf_accessor_unpack_floats ( const cgltf_accessor accessor,
cgltf_float out,
cgltf_size  float_count 
)
cgltf_result cgltf_copy_extras_json ( const cgltf_data data,
const cgltf_extras extras,
char *  dest,
cgltf_size dest_size 
)
cgltf_size cgltf_decode_string ( char *  string)
cgltf_size cgltf_decode_uri ( char *  uri)
void cgltf_free ( cgltf_data data)
cgltf_result cgltf_load_buffer_base64 ( const cgltf_options options,
cgltf_size  size,
const char *  base64,
void **  out_data 
)
cgltf_result cgltf_load_buffers ( const cgltf_options options,
cgltf_data data,
const char *  gltf_path 
)
void cgltf_node_transform_local ( const cgltf_node node,
cgltf_float out_matrix 
)
void cgltf_node_transform_world ( const cgltf_node node,
cgltf_float out_matrix 
)
cgltf_size cgltf_num_components ( cgltf_type  type)
cgltf_result cgltf_parse ( const cgltf_options options,
const void data,
cgltf_size  size,
cgltf_data **  out_data 
)
cgltf_result cgltf_parse_file ( const cgltf_options options,
const char *  path,
cgltf_data **  out_data 
)
cgltf_result cgltf_validate ( cgltf_data data)