跳转至

Cpp TinyGltf

相关链接:

  1. TinyGltf github仓库

TinyGLTF是针对glTF2.0格式的一个读写库,它是一个基于C++11的头文件库。

  1. 依赖Niels Lohmann's json库,用于解析JSON文件(也可以换成RadpidJSONdevel-picojson(C++03即可)、sajson、或者其他的Json后台)
  2. 依赖stb_image.hstb_image_wrtie.h用于图片的读写

示例

由于TinyGltf只是一个头文件库,所以将相关的头文件拷贝到工程中即可。

需要拷贝的文件有:stb_image.hstb_image_write.hjson.hpptiny_gltf.h

主题 代码 说明
IO loader_example.cc 加载gltf2.0,并输出所有信息
  saver 读入gltf2.0,再输出成gltf格式
  create_triangle_gltf 创建一个三角形,并输出成gltf的格式
渲染 basic 简单的gltf查看器(没有pbr着色器)
  raytrace 简易、小巧、仅头文件的场景图形库
格式验证 validator 验证文件是否满足glTF 2.0标准

选项

加载选项

TinyGLTF::SetPreserveimageChannels(bool onoff)

  • true:为加载的图像保留,与图像文件中相同的图像通道
  • false:默认为向后兼容(图像通道被加宽到RGBA4通道)
  • 此设置仅在使用内置图像加载器(STB图像加载器)时有效

编译选项

名称 说明
TINYGLTF_NOEXCEPTION 在JSON解析中关闭C++异常。You can use -fno-exceptions or by defining the symbol JSON_NOEXCEPTION and TINYGLTF_NOEXCEPTION to fully remove C++ exception codes when compiling TinyGLTF.
TINYGLTF_NO_STB_IMAGE 不要用stb_image加载图像。相反,通过设置TinyGLTF::SetImageLoader(LoadimageDataFunction LoadImageData, void *user_data)回调函数来自定义加载方法
TINYGLTF_NO_STB_IMAGE_WRITE 不要使用stb_image_write来写入图像。通过设置TinyGLTF::SetImageWriter(WriteimageDataFunction WriteImageData, void *user_data)回调函数来自定义写方法
TINYGLTF_NO_EXTERNAL_IMAGE 不要尝试加载外部图像文件。如果您不想在glTF解析期间加载图像文件,这个选项能帮助到你
TINYGLTF_ANDROID_LOAD_FROM_ASSETS 从打包的应用资产中加载所有文件,而不是常规的文件系统。注意,你必须事先将一个有效的资产管理器从你的android应用程序传递给tinygltf::asset_manager
TINYGLTF_ENABLE_DRACO 打开Draco压缩。用户必须在项目文件中提供包含路径和链接相应的库
TINYGLTF_NO_INCLUDE_JSON 禁用在ting_gltf.h中包含json.hpp。因为它之前已经包含过了,或者您想在包含tiny_gltf.h之前使用它的自定义路径
TINYGLTF_NO_INCLUDE_RAPIDJSON 禁止在tiny_gltf.h中包含RapidJson的头文件,因为它之前已经包含过了,或者你想在包含tiny_gltf.h之前使用它的自定义路径
TINYGLTF_NO_INCLUDE_STB_IMAGE 禁用在tiny_gltf.h中包含stb_image.h,因为它之前已经包含过了,或者您想在#include"tiny_gltf.h"之前使用自定义路径inlucde它
TINYGLTF_NO_INCLUDE_STB_IMAGE_WRITE Disable including stb_image_write.h from within tiny_gltf.h because it has been already included before or you want to include it using custom path before including tiny_gltf.h.
TINYGLTF_USE_RAPIDJSON Use RapidJSON as a JSON parser/serializer. RapidJSON files are not included in TinyGLTF repo. Please set an include path to RapidJSON if you enable this feature.
TINYGLTF_USE_CPP14 Use C++14 feature(requires C++14 compiler). This may give better performance than C++11.