diff options
| author | Andrew Reidmeyer <[email protected]> | 2017-06-13 20:38:29 -0600 |
|---|---|---|
| committer | Andrew Reidmeyer <[email protected]> | 2017-06-13 20:38:29 -0600 |
| commit | 62a1427154131f2387675957c1d2027061f354f0 (patch) | |
| tree | 4efdcb7d3fe9722d46523a51bc5c90b96f25441e /demo/DemoApp/meshLoaderGenerated.h | |
| parent | Initial 1.0.0 binary release (diff) | |
| download | flow-1.0.1.tar.xz flow-1.0.1.zip | |
NvFlow 1.0.1v1.0.1
Diffstat (limited to 'demo/DemoApp/meshLoaderGenerated.h')
| -rw-r--r-- | demo/DemoApp/meshLoaderGenerated.h | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/demo/DemoApp/meshLoaderGenerated.h b/demo/DemoApp/meshLoaderGenerated.h new file mode 100644 index 0000000..c931f4f --- /dev/null +++ b/demo/DemoApp/meshLoaderGenerated.h @@ -0,0 +1,132 @@ +/* +* Copyright (c) 2014-2017, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +typedef MeshContext* (*MeshContextCreate_ptr_t)(const MeshContextDesc* desc); +typedef void (*MeshContextUpdate_ptr_t)(MeshContext* context, const MeshContextDesc* desc); +typedef void (*MeshContextRelease_ptr_t)(MeshContext* context); +typedef MeshIndexBuffer* (*MeshIndexBufferCreate_ptr_t)(MeshContext* context, MeshUint* indices, MeshUint numIndices); +typedef void (*MeshIndexBufferRelease_ptr_t)(MeshIndexBuffer* buffer); +typedef MeshVertexBuffer* (*MeshVertexBufferCreate_ptr_t)(MeshContext* context, MeshVertex* vertices, MeshUint numVertices); +typedef void (*MeshVertexBufferRelease_ptr_t)(MeshVertexBuffer* buffer); +typedef void (*MeshContextDraw_ptr_t)(MeshContext* context, const MeshContextDrawParams* params); +typedef MeshContext* (*MeshInteropContextCreate_ptr_t)(AppGraphCtx* appctx); +typedef void (*MeshInteropContextUpdate_ptr_t)(MeshContext* context, AppGraphCtx* appctx); + +struct MeshLoader +{ + void* module = nullptr; + const char* suffix = ""; + char buf[1024u]; + + MeshContextCreate_ptr_t MeshContextCreate_ptr; + MeshContextUpdate_ptr_t MeshContextUpdate_ptr; + MeshContextRelease_ptr_t MeshContextRelease_ptr; + MeshIndexBufferCreate_ptr_t MeshIndexBufferCreate_ptr; + MeshIndexBufferRelease_ptr_t MeshIndexBufferRelease_ptr; + MeshVertexBufferCreate_ptr_t MeshVertexBufferCreate_ptr; + MeshVertexBufferRelease_ptr_t MeshVertexBufferRelease_ptr; + MeshContextDraw_ptr_t MeshContextDraw_ptr; + MeshInteropContextCreate_ptr_t MeshInteropContextCreate_ptr; + MeshInteropContextUpdate_ptr_t MeshInteropContextUpdate_ptr; + +}gMeshLoader; + +MeshContext* MeshContextCreate(const MeshContextDesc* desc) +{ + return gMeshLoader.MeshContextCreate_ptr(desc); +} + +void MeshContextUpdate(MeshContext* context, const MeshContextDesc* desc) +{ + return gMeshLoader.MeshContextUpdate_ptr(context, desc); +} + +void MeshContextRelease(MeshContext* context) +{ + return gMeshLoader.MeshContextRelease_ptr(context); +} + +MeshIndexBuffer* MeshIndexBufferCreate(MeshContext* context, MeshUint* indices, MeshUint numIndices) +{ + return gMeshLoader.MeshIndexBufferCreate_ptr(context, indices, numIndices); +} + +void MeshIndexBufferRelease(MeshIndexBuffer* buffer) +{ + return gMeshLoader.MeshIndexBufferRelease_ptr(buffer); +} + +MeshVertexBuffer* MeshVertexBufferCreate(MeshContext* context, MeshVertex* vertices, MeshUint numVertices) +{ + return gMeshLoader.MeshVertexBufferCreate_ptr(context, vertices, numVertices); +} + +void MeshVertexBufferRelease(MeshVertexBuffer* buffer) +{ + return gMeshLoader.MeshVertexBufferRelease_ptr(buffer); +} + +void MeshContextDraw(MeshContext* context, const MeshContextDrawParams* params) +{ + return gMeshLoader.MeshContextDraw_ptr(context, params); +} + +MeshContext* MeshInteropContextCreate(AppGraphCtx* appctx) +{ + return gMeshLoader.MeshInteropContextCreate_ptr(appctx); +} + +void MeshInteropContextUpdate(MeshContext* context, AppGraphCtx* appctx) +{ + return gMeshLoader.MeshInteropContextUpdate_ptr(context, appctx); +} + +void* meshLoaderLoadFunction(MeshLoader* inst, const char* name) +{ + snprintf(inst->buf, 1024u, "%s%s", name, inst->suffix); + + return SDL_LoadFunction(inst->module, inst->buf); +} + +void loadMesh(AppGraphCtxType type) +{ + const char* moduleName = demoAppDLLName(type); + + gMeshLoader.suffix = demoAppBackendSuffix(type); + + gMeshLoader.module = SDL_LoadObject(moduleName); + + gMeshLoader.MeshContextCreate_ptr = (MeshContextCreate_ptr_t)(meshLoaderLoadFunction(&gMeshLoader, "MeshContextCreate")); + gMeshLoader.MeshContextUpdate_ptr = (MeshContextUpdate_ptr_t)(meshLoaderLoadFunction(&gMeshLoader, "MeshContextUpdate")); + gMeshLoader.MeshContextRelease_ptr = (MeshContextRelease_ptr_t)(meshLoaderLoadFunction(&gMeshLoader, "MeshContextRelease")); + gMeshLoader.MeshIndexBufferCreate_ptr = (MeshIndexBufferCreate_ptr_t)(meshLoaderLoadFunction(&gMeshLoader, "MeshIndexBufferCreate")); + gMeshLoader.MeshIndexBufferRelease_ptr = (MeshIndexBufferRelease_ptr_t)(meshLoaderLoadFunction(&gMeshLoader, "MeshIndexBufferRelease")); + gMeshLoader.MeshVertexBufferCreate_ptr = (MeshVertexBufferCreate_ptr_t)(meshLoaderLoadFunction(&gMeshLoader, "MeshVertexBufferCreate")); + gMeshLoader.MeshVertexBufferRelease_ptr = (MeshVertexBufferRelease_ptr_t)(meshLoaderLoadFunction(&gMeshLoader, "MeshVertexBufferRelease")); + gMeshLoader.MeshContextDraw_ptr = (MeshContextDraw_ptr_t)(meshLoaderLoadFunction(&gMeshLoader, "MeshContextDraw")); + gMeshLoader.MeshInteropContextCreate_ptr = (MeshInteropContextCreate_ptr_t)(meshLoaderLoadFunction(&gMeshLoader, "MeshInteropContextCreate")); + gMeshLoader.MeshInteropContextUpdate_ptr = (MeshInteropContextUpdate_ptr_t)(meshLoaderLoadFunction(&gMeshLoader, "MeshInteropContextUpdate")); +} + +void unloadMesh() +{ + gMeshLoader.MeshContextCreate_ptr = nullptr; + gMeshLoader.MeshContextUpdate_ptr = nullptr; + gMeshLoader.MeshContextRelease_ptr = nullptr; + gMeshLoader.MeshIndexBufferCreate_ptr = nullptr; + gMeshLoader.MeshIndexBufferRelease_ptr = nullptr; + gMeshLoader.MeshVertexBufferCreate_ptr = nullptr; + gMeshLoader.MeshVertexBufferRelease_ptr = nullptr; + gMeshLoader.MeshContextDraw_ptr = nullptr; + gMeshLoader.MeshInteropContextCreate_ptr = nullptr; + gMeshLoader.MeshInteropContextUpdate_ptr = nullptr; + + SDL_UnloadObject(gMeshLoader.module); +} |