From 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 Mon Sep 17 00:00:00 2001 From: git perforce import user Date: Tue, 25 Oct 2016 12:29:14 -0600 Subject: Initial commit: PhysX 3.4.0 Update @ 21294896 APEX 1.4.0 Update @ 21275617 [CL 21300167] --- APEX_1.4/framework/include/ApexVertexBuffer.h | 103 ++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 APEX_1.4/framework/include/ApexVertexBuffer.h (limited to 'APEX_1.4/framework/include/ApexVertexBuffer.h') diff --git a/APEX_1.4/framework/include/ApexVertexBuffer.h b/APEX_1.4/framework/include/ApexVertexBuffer.h new file mode 100644 index 00000000..8e44c8f0 --- /dev/null +++ b/APEX_1.4/framework/include/ApexVertexBuffer.h @@ -0,0 +1,103 @@ +/* + * 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 APEX_VERTEX_BUFFER_H +#define APEX_VERTEX_BUFFER_H + +#include "RenderMeshAssetIntl.h" +#include "ApexVertexFormat.h" +#include "VertexBufferParameters.h" +#include +#include "ApexSharedUtils.h" +#include "ApexInteropableBuffer.h" + +namespace nvidia +{ +namespace apex +{ + +class ApexVertexBuffer : public VertexBufferIntl, public ApexInteropableBuffer, public NvParameterized::SerializationCallback +{ +public: + ApexVertexBuffer(); + ~ApexVertexBuffer(); + + // from VertexBuffer + const VertexFormat& getFormat() const + { + return mFormat; + } + uint32_t getVertexCount() const + { + return mParams->vertexCount; + } + void* getBuffer(uint32_t bufferIndex); + void* getBufferAndFormatWritable(RenderDataFormat::Enum& format, uint32_t bufferIndex) + { + return getBufferAndFormat(format, bufferIndex); + } + + void* getBufferAndFormat(RenderDataFormat::Enum& format, uint32_t bufferIndex) + { + format = getFormat().getBufferFormat(bufferIndex); + return getBuffer(bufferIndex); + } + bool getBufferData(void* dstBuffer, nvidia::RenderDataFormat::Enum dstBufferFormat, uint32_t dstBufferStride, uint32_t bufferIndex, + uint32_t startVertexIndex, uint32_t elementCount) const; + PX_INLINE const void* getBuffer(uint32_t bufferIndex) const + { + return (const void*)((ApexVertexBuffer*)this)->getBuffer(bufferIndex); + } + PX_INLINE const void* getBufferAndFormat(RenderDataFormat::Enum& format, uint32_t bufferIndex) const + { + return (const void*)((ApexVertexBuffer*)this)->getBufferAndFormat(format, bufferIndex); + } + + // from VertexBufferIntl + void build(const VertexFormat& format, uint32_t vertexCount); + + VertexFormat& getFormatWritable() + { + return mFormat; + } + void applyTransformation(const PxMat44& transformation); + void applyScale(float scale); + bool mergeBinormalsIntoTangents(); + + void copy(uint32_t dstIndex, uint32_t srcIndex, ApexVertexBuffer* srcBufferPtr = NULL); + void resize(uint32_t vertexCount); + + // from NvParameterized::SerializationCallback + + void preSerialize(void* userData_); + + void setParams(VertexBufferParameters* param); + VertexBufferParameters* getParams() + { + return mParams; + } + + uint32_t getAllocationSize() const; + + void applyPermutation(const Array& permutation); + +protected: + VertexBufferParameters* mParams; + + ApexVertexFormat mFormat; // Wrapper class for mParams->vertexFormat +}; + + +} // namespace apex +} // namespace nvidia + + +#endif // APEX_VERTEX_BUFFER_H -- cgit v1.2.3