浏览代码

[rmodels] Set cgltf callbacks to use `LoadFileData()` and `UnloadFileData()` (#3652)

pull/3654/head
kolunmi 1年前
committed by GitHub
父节点
当前提交
8b5943d930
找不到此签名对应的密钥 GPG 密钥 ID: 4AEE18F83AFDEB23
共有 1 个文件被更改,包括 25 次插入0 次删除
  1. +25
    -0
      src/rmodels.c

+ 25
- 0
src/rmodels.c 查看文件

@ -4740,6 +4740,25 @@ static ModelAnimation *LoadModelAnimationsIQM(const char *fileName, int *animCou
#endif
#if defined(SUPPORT_FILEFORMAT_GLTF)
// Load file data callback for cgltf
static cgltf_result LoadFileGLTFCallback(const struct cgltf_memory_options *memoryOptions, const struct cgltf_file_options *fileOptions, const char *path, cgltf_size *size, void **data)
{
int filesize;
unsigned char *filedata = LoadFileData(path, &filesize);
if (filedata == NULL) return cgltf_result_io_error;
*size = filesize;
*data = filedata;
return cgltf_result_success;
}
// Release file data callback for cgltf
static void ReleaseFileGLTFCallback(const struct cgltf_memory_options *memoryOptions, const struct cgltf_file_options *fileOptions, void *data) {
UnloadFileData(data);
}
// Load image from different glTF provided methods (uri, path, buffer_view)
static Image LoadImageFromCgltfImage(cgltf_image *cgltfImage, const char *texPath)
{
@ -4768,6 +4787,8 @@ static Image LoadImageFromCgltfImage(cgltf_image *cgltfImage, const char *texPat
void *data = NULL;
cgltf_options options = { 0 };
options.file.read = LoadFileGLTFCallback;
options.file.release = ReleaseFileGLTFCallback;
cgltf_result result = cgltf_load_buffer_base64(&options, outSize, cgltfImage->uri + i + 1, &data);
if (result == cgltf_result_success)
@ -4891,6 +4912,8 @@ static Model LoadGLTF(const char *fileName)
// glTF data loading
cgltf_options options = { 0 };
options.file.read = LoadFileGLTFCallback;
options.file.release = ReleaseFileGLTFCallback;
cgltf_data *data = NULL;
cgltf_result result = cgltf_parse(&options, fileData, dataSize, &data);
@ -5387,6 +5410,8 @@ static ModelAnimation *LoadModelAnimationsGLTF(const char *fileName, int *animCo
// glTF data loading
cgltf_options options = { 0 };
options.file.read = LoadFileGLTFCallback;
options.file.release = ReleaseFileGLTFCallback;
cgltf_data *data = NULL;
cgltf_result result = cgltf_parse(&options, fileData, dataSize, &data);

||||||
x
 
000:0
正在加载...
取消
保存