aboutsummaryrefslogtreecommitdiff
path: root/APEX_1.4/include/UserRenderResourceManager.h
diff options
context:
space:
mode:
authorgit perforce import user <a@b>2016-10-25 12:29:14 -0600
committerSheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees>2016-10-25 18:56:37 -0500
commit3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch)
treefa6485c169e50d7415a651bf838f5bcd0fd3bfbd /APEX_1.4/include/UserRenderResourceManager.h
downloadphysx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.tar.xz
physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.zip
Initial commit:
PhysX 3.4.0 Update @ 21294896 APEX 1.4.0 Update @ 21275617 [CL 21300167]
Diffstat (limited to 'APEX_1.4/include/UserRenderResourceManager.h')
-rw-r--r--APEX_1.4/include/UserRenderResourceManager.h187
1 files changed, 187 insertions, 0 deletions
diff --git a/APEX_1.4/include/UserRenderResourceManager.h b/APEX_1.4/include/UserRenderResourceManager.h
new file mode 100644
index 00000000..99f7241a
--- /dev/null
+++ b/APEX_1.4/include/UserRenderResourceManager.h
@@ -0,0 +1,187 @@
+/*
+ * Copyright (c) 2008-2015, 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.
+ */
+
+
+#ifndef USER_RENDER_RESOURCE_MANAGER_H
+#define USER_RENDER_RESOURCE_MANAGER_H
+
+/*!
+\file
+\brief class UserRenderResourceManager, structs RenderPrimitiveType, RenderBufferHint, and RenderCullMode
+*/
+
+#include "ApexUsingNamespace.h"
+
+namespace nvidia
+{
+namespace apex
+{
+
+PX_PUSH_PACK_DEFAULT
+
+class UserRenderVertexBuffer;
+class UserRenderVertexBufferDesc;
+class UserRenderIndexBuffer;
+class UserRenderIndexBufferDesc;
+class UserRenderSurfaceBuffer;
+class UserRenderSurfaceBufferDesc;
+class UserRenderBoneBuffer;
+class UserRenderBoneBufferDesc;
+class UserRenderInstanceBuffer;
+class UserRenderInstanceBufferDesc;
+class UserRenderSpriteBuffer;
+class UserRenderSpriteBufferDesc;
+class UserRenderResource;
+class UserRenderResourceDesc;
+class UserOpaqueMesh;
+class UserOpaqueMeshDesc;
+
+class UserRenderSpriteTextureDesc;
+
+/**
+\brief Describe the implied vertex ordering
+*/
+struct RenderPrimitiveType
+{
+ /**
+ \brief Enum of the implied vertex ordering types
+ */
+ enum Enum
+ {
+ UNKNOWN = 0,
+
+ TRIANGLES,
+ TRIANGLE_STRIP,
+
+ LINES,
+ LINE_STRIP,
+
+ POINTS,
+ POINT_SPRITES,
+ };
+};
+
+/**
+\brief Possible triangle culling modes
+*/
+struct RenderCullMode
+{
+ /**
+ \brief Enum of possible triangle culling mode types
+ */
+ enum Enum
+ {
+ CLOCKWISE = 0,
+ COUNTER_CLOCKWISE,
+ NONE
+ };
+};
+
+/**
+\brief Hint of the buffer data lifespan
+*/
+struct RenderBufferHint
+{
+ /**
+ \brief Enum of hints of the buffer data lifespan
+ */
+ enum Enum
+ {
+ STATIC = 0,
+ DYNAMIC,
+ STREAMING,
+ };
+};
+
+/**
+\brief User defined renderable resource manager
+
+A render resource manager is an object that creates and manages renderable resources...
+This is given to the APEX SDK at creation time via the descriptor and must be persistent through the lifetime
+of the SDK.
+*/
+class UserRenderResourceManager
+{
+public:
+ virtual ~UserRenderResourceManager() {}
+
+ /**
+ The create methods in this class will only be called from the context of an Renderable::updateRenderResources()
+ call, but the release methods can be triggered by any APEX API call that deletes an Actor. It is up to
+ the end-user to make the release methods thread safe.
+ */
+
+ virtual UserRenderVertexBuffer* createVertexBuffer(const UserRenderVertexBufferDesc& desc) = 0;
+ /** \brief Release vertex buffer */
+ virtual void releaseVertexBuffer(UserRenderVertexBuffer& buffer) = 0;
+
+ /** \brief Create index buffer */
+ virtual UserRenderIndexBuffer* createIndexBuffer(const UserRenderIndexBufferDesc& desc) = 0;
+ /** \brief Release index buffer */
+ virtual void releaseIndexBuffer(UserRenderIndexBuffer& buffer) = 0;
+
+ /** \brief Create bone buffer */
+ virtual UserRenderBoneBuffer* createBoneBuffer(const UserRenderBoneBufferDesc& desc) = 0;
+ /** \brief Release bone buffer */
+ virtual void releaseBoneBuffer(UserRenderBoneBuffer& buffer) = 0;
+
+ /** \brief Create instance buffer */
+ virtual UserRenderInstanceBuffer* createInstanceBuffer(const UserRenderInstanceBufferDesc& desc) = 0;
+ /** \brief Release instance buffer */
+ virtual void releaseInstanceBuffer(UserRenderInstanceBuffer& buffer) = 0;
+
+ /** \brief Create sprite buffer */
+ virtual UserRenderSpriteBuffer* createSpriteBuffer(const UserRenderSpriteBufferDesc& desc) = 0;
+ /** \brief Release sprite buffer */
+ virtual void releaseSpriteBuffer(UserRenderSpriteBuffer& buffer) = 0;
+
+ /** \brief Create surface buffer */
+ virtual UserRenderSurfaceBuffer* createSurfaceBuffer(const UserRenderSurfaceBufferDesc& desc) = 0;
+ /** \brief Release surface buffer */
+ virtual void releaseSurfaceBuffer(UserRenderSurfaceBuffer& buffer) = 0;
+
+ /** \brief Create resource */
+ virtual UserRenderResource* createResource(const UserRenderResourceDesc& desc) = 0;
+
+ /**
+ releaseResource() should not release any of the included buffer pointers. Those free methods will be
+ called separately by the APEX SDK before (or sometimes after) releasing the UserRenderResource.
+ */
+ virtual void releaseResource(UserRenderResource& resource) = 0;
+
+ /**
+ Get the maximum number of bones supported by a given material. Return 0 for infinite.
+ For optimal rendering, do not limit the bone count (return 0 from this function).
+ */
+ virtual uint32_t getMaxBonesForMaterial(void* material) = 0;
+
+
+ /** \brief Get the sprite layout data
+ Returns true in case textureDescArray is set.
+ In case user is not interested in setting specific layout for sprite PS,
+ this function should return false.
+ */
+ virtual bool getSpriteLayoutData(uint32_t spriteCount, uint32_t spriteSemanticsBitmap, UserRenderSpriteBufferDesc* textureDescArray) = 0;
+
+ /** \brief Get the instance layout data
+ Returns true in case textureDescArray is set.
+ In case user is not interested in setting specific layout for sprite PS,
+ this function should return false.
+ */
+ virtual bool getInstanceLayoutData(uint32_t spriteCount, uint32_t spriteSemanticsBitmap, UserRenderInstanceBufferDesc* instanceDescArray) = 0;
+
+};
+
+PX_POP_PACK
+
+}
+} // end namespace nvidia::apex
+
+#endif