To use this extension, you must also load the ExtSerialization extension and create a serialization manager as described in Serialization (NvBlastExtSerialization).
We repeat this here (again, assuming we are in the Nv::Blast namespace):
ExtSerialization* ser = NvBlastExtSerializationCreate();
Then, call the function NvBlastExtPxSerializerLoadSet, declared in NvBlastExtPxSerialization.h, passing in your TkFramework (required by ExtPhysX), along with your physx::PxPhysics and physx::PxCooking pointers:
TkFramework* framework = ... // We must have created a TkFramework physx::PxPhysics* physics = ... // and PxPhysics physx::PxCooking* cooking = ... // and PxCooking NvBlastExtPxSerializerLoadSet(*framework, *physics, *cooking *ser);
Now your serialization manager will have the serializers provided by this extension. Currently only ExtPxAsset serializers exist, with object type ID given by
ExtPxObjectTypeID::Asset
As with low-level assets, you can serialize using the serialization manager directly:
const ExtPxAsset* asset = ... // Given pointer to an Nv::Blast::ExtPxAsset void* buffer; uint64_t size = ser->serializeIntoBuffer(buffer, asset, ExtPxObjectTypeID::Asset);
or use the wrapper function defined in NvBlastExtPxSerialization.h:
void* buffer; uint64_t size = NvBlastExtSerializationSerializeExtPxAssetIntoBuffer(buffer, *ser, asset);