1//
2// Redistribution and use in source and binary forms, with or without
3// modification, are permitted provided that the following conditions
4// are met:
5// * Redistributions of source code must retain the above copyright
6// notice, this list of conditions and the following disclaimer.
7// * Redistributions in binary form must reproduce the above copyright
8// notice, this list of conditions and the following disclaimer in the
9// documentation and/or other materials provided with the distribution.
10// * Neither the name of NVIDIA CORPORATION nor the names of its
11// contributors may be used to endorse or promote products derived
12// from this software without specific prior written permission.
13//
14// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
15// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
18// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25//
26// Copyright (c) 2008-2021 NVIDIA Corporation. All rights reserved.
27#ifndef PXPVDSDK_PXPVDUSERRENDERER_H
28#define PXPVDSDK_PXPVDUSERRENDERER_H
29
30/** \addtogroup pvd
31@{
32*/
33#include "foundation/PxVec3.h"
34#include "foundation/PxTransform.h"
35#include "pvd/PxPvd.h"
36
37#include "PxPvdDataStream.h"
38#include "PxPvdRenderBuffer.h"
39#include "PsUserAllocated.h"
40
41#if !PX_DOXYGEN
42namespace physx
43{
44#endif
45
46class PxPvd;
47
48#if !PX_DOXYGEN
49namespace pvdsdk
50{
51#endif
52
53class RendererEventClient;
54
55class PvdUserRenderer : public shdfnd::UserAllocated
56{
57 protected:
58 virtual ~PvdUserRenderer()
59 {
60 }
61
62 public:
63 virtual void release() = 0;
64 virtual void setClient(RendererEventClient* client) = 0;
65
66 // Instance to associate the further rendering with.
67 virtual void setInstanceId(const void* instanceId) = 0;
68 // Draw these points associated with this instance
69 virtual void drawPoints(const PvdDebugPoint* points, uint32_t count) = 0;
70 // Draw these lines associated with this instance
71 virtual void drawLines(const PvdDebugLine* lines, uint32_t count) = 0;
72 // Draw these triangles associated with this instance
73 virtual void drawTriangles(const PvdDebugTriangle* triangles, uint32_t count) = 0;
74 // Draw this text associated with this instance
75 virtual void drawText(const PvdDebugText& text) = 0;
76
77 // Draw SDK debug render
78 virtual void drawRenderbuffer(const PvdDebugPoint* pointData, uint32_t pointCount, const PvdDebugLine* lineData,
79 uint32_t lineCount, const PvdDebugTriangle* triangleData, uint32_t triangleCount) = 0;
80
81 // Constraint visualization routines
82 virtual void visualizeJointFrames(const PxTransform& parent, const PxTransform& child) = 0;
83 virtual void visualizeLinearLimit(const PxTransform& t0, const PxTransform& t1, float value, bool active) = 0;
84 virtual void visualizeAngularLimit(const PxTransform& t0, float lower, float upper, bool active) = 0;
85 virtual void visualizeLimitCone(const PxTransform& t, float tanQSwingY, float tanQSwingZ, bool active) = 0;
86 virtual void visualizeDoubleCone(const PxTransform& t, float angle, bool active) = 0;
87
88 // Clear the immedate buffer.
89 virtual void flushRenderEvents() = 0;
90
91 static PvdUserRenderer* create(uint32_t bufferSize = 0x2000);
92};
93
94class RendererEventClient
95{
96 public:
97 virtual ~RendererEventClient(){}
98
99 virtual void handleBufferFlush(const uint8_t* inData, uint32_t inLength) = 0;
100};
101
102#if !PX_DOXYGEN
103}
104}
105#endif
106/** @} */
107#endif // PXPVDSDK_PXPVDUSERRENDERER_H
108

source code of qtquick3dphysics/src/3rdparty/PhysX/source/pvd/include/PxPvdUserRenderer.h