Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef USER_RENDER_VERTEX_BUFFER_DESC_H
00031 #define USER_RENDER_VERTEX_BUFFER_DESC_H
00032
00038 #include "ApexUsingNamespace.h"
00039 #include "UserRenderResourceManager.h"
00040 #include "RenderDataFormat.h"
00041 #include "ApexSDK.h"
00042
00043 namespace physx
00044 {
00045 class PxCudaContextManager;
00046 };
00047
00048 namespace nvidia
00049 {
00050 namespace apex
00051 {
00052
00053 PX_PUSH_PACK_DEFAULT
00054
00058 struct RenderVertexSemantic
00059 {
00063 enum Enum
00064 {
00065 CUSTOM = -1,
00066
00067 POSITION = 0,
00068 NORMAL,
00069 TANGENT,
00070 BINORMAL,
00071 COLOR,
00072 TEXCOORD0,
00073 TEXCOORD1,
00074 TEXCOORD2,
00075 TEXCOORD3,
00076 BONE_INDEX,
00077 BONE_WEIGHT,
00078
00079 DISPLACEMENT_TEXCOORD,
00080 DISPLACEMENT_FLAGS,
00081
00082 NUM_SEMANTICS
00083 };
00084 };
00085
00089 struct TextureUVOrigin
00090 {
00094 enum Enum
00095 {
00096 ORIGIN_TOP_LEFT = 0,
00097 ORIGIN_TOP_RIGHT = 1,
00098 ORIGIN_BOTTOM_LEFT = 2,
00099 ORIGIN_BOTTOM_RIGHT = 3,
00100
00101 ORIGIN_UNKNOWN = 0xFFFFFFFF
00102 };
00103 };
00104
00105
00109 class UserRenderVertexBufferDesc
00110 {
00111 public:
00112 UserRenderVertexBufferDesc(void)
00113 {
00114 interopContext = 0;
00115 registerInCUDA = false;
00116 maxVerts = 0;
00117 hint = RenderBufferHint::STATIC;
00118 for (uint32_t i = 0; i < RenderVertexSemantic::NUM_SEMANTICS; i++)
00119 {
00120 buffersRequest[i] = RenderDataFormat::UNSPECIFIED;
00121 }
00122 moduleIdentifier = 0;
00123 numCustomBuffers = 0;
00124 customBuffersIdents = NULL;
00125 customBuffersRequest = NULL;
00126 uvOrigin = TextureUVOrigin::ORIGIN_TOP_LEFT;
00127 canBeShared = true;
00128 }
00129
00133 bool isValid(void) const
00134 {
00135 uint32_t numFailed = 0;
00136 if (maxVerts == 0)
00137 {
00138 numFailed++;
00139 }
00140 if (!customBuffersRequest)
00141 {
00142 uint32_t vertexSize = 0;
00143 for (uint32_t i = 0; i < RenderVertexSemantic::NUM_SEMANTICS; i++)
00144 {
00145 vertexSize += RenderDataFormat::getFormatDataSize(buffersRequest[i]);
00146 }
00147 if (vertexSize == 0)
00148 {
00149 numFailed++;
00150 }
00151 }
00152 return (numFailed == 0);
00153 }
00154
00155 public:
00159 uint32_t maxVerts;
00160
00164 RenderBufferHint::Enum hint;
00165
00171 RenderDataFormat::Enum buffersRequest[RenderVertexSemantic::NUM_SEMANTICS];
00172
00180 uint32_t numCustomBuffers;
00181
00185 void** customBuffersIdents;
00186
00190 RenderDataFormat::Enum* customBuffersRequest;
00191
00195 AuthObjTypeID moduleIdentifier;
00196
00200 TextureUVOrigin::Enum uvOrigin;
00201
00205 bool canBeShared;
00206
00210 bool registerInCUDA;
00211
00218 PxCudaContextManager* interopContext;
00219 };
00220
00221 PX_POP_PACK
00222
00223 }
00224 }
00225
00226 #endif // USER_RENDER_VERTEX_BUFFER_DESC_H