Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef USER_RENDER_VERTEX_BUFFER_DESC_H
00013 #define USER_RENDER_VERTEX_BUFFER_DESC_H
00014
00020 #include "ApexUsingNamespace.h"
00021 #include "UserRenderResourceManager.h"
00022 #include "RenderDataFormat.h"
00023 #include "ApexSDK.h"
00024
00025 namespace physx
00026 {
00027 class PxCudaContextManager;
00028 };
00029
00030 namespace nvidia
00031 {
00032 namespace apex
00033 {
00034
00035 PX_PUSH_PACK_DEFAULT
00036
00040 struct RenderVertexSemantic
00041 {
00045 enum Enum
00046 {
00047 CUSTOM = -1,
00048
00049 POSITION = 0,
00050 NORMAL,
00051 TANGENT,
00052 BINORMAL,
00053 COLOR,
00054 TEXCOORD0,
00055 TEXCOORD1,
00056 TEXCOORD2,
00057 TEXCOORD3,
00058 BONE_INDEX,
00059 BONE_WEIGHT,
00060
00061 DISPLACEMENT_TEXCOORD,
00062 DISPLACEMENT_FLAGS,
00063
00064 NUM_SEMANTICS
00065 };
00066 };
00067
00071 struct TextureUVOrigin
00072 {
00076 enum Enum
00077 {
00078 ORIGIN_TOP_LEFT = 0,
00079 ORIGIN_TOP_RIGHT = 1,
00080 ORIGIN_BOTTOM_LEFT = 2,
00081 ORIGIN_BOTTOM_RIGHT = 3,
00082
00083 ORIGIN_UNKNOWN = 0xFFFFFFFF
00084 };
00085 };
00086
00087
00091 class UserRenderVertexBufferDesc
00092 {
00093 public:
00094 UserRenderVertexBufferDesc(void)
00095 {
00096 interopContext = 0;
00097 registerInCUDA = false;
00098 maxVerts = 0;
00099 hint = RenderBufferHint::STATIC;
00100 for (uint32_t i = 0; i < RenderVertexSemantic::NUM_SEMANTICS; i++)
00101 {
00102 buffersRequest[i] = RenderDataFormat::UNSPECIFIED;
00103 }
00104 moduleIdentifier = 0;
00105 numCustomBuffers = 0;
00106 customBuffersIdents = NULL;
00107 customBuffersRequest = NULL;
00108 uvOrigin = TextureUVOrigin::ORIGIN_TOP_LEFT;
00109 canBeShared = true;
00110 }
00111
00115 bool isValid(void) const
00116 {
00117 uint32_t numFailed = 0;
00118 if (maxVerts == 0)
00119 {
00120 numFailed++;
00121 }
00122 if (!customBuffersRequest)
00123 {
00124 uint32_t vertexSize = 0;
00125 for (uint32_t i = 0; i < RenderVertexSemantic::NUM_SEMANTICS; i++)
00126 {
00127 vertexSize += RenderDataFormat::getFormatDataSize(buffersRequest[i]);
00128 }
00129 if (vertexSize == 0)
00130 {
00131 numFailed++;
00132 }
00133 }
00134 return (numFailed == 0);
00135 }
00136
00137 public:
00141 uint32_t maxVerts;
00142
00146 RenderBufferHint::Enum hint;
00147
00153 RenderDataFormat::Enum buffersRequest[RenderVertexSemantic::NUM_SEMANTICS];
00154
00162 uint32_t numCustomBuffers;
00163
00167 void** customBuffersIdents;
00168
00172 RenderDataFormat::Enum* customBuffersRequest;
00173
00177 AuthObjTypeID moduleIdentifier;
00178
00182 TextureUVOrigin::Enum uvOrigin;
00183
00187 bool canBeShared;
00188
00192 bool registerInCUDA;
00193
00200 PxCudaContextManager* interopContext;
00201 };
00202
00203 PX_POP_PACK
00204
00205 }
00206 }
00207
00208 #endif // USER_RENDER_VERTEX_BUFFER_DESC_H