b3GpuBroadphaseInterface.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef B3_GPU_BROADPHASE_INTERFACE_H
  2. #define B3_GPU_BROADPHASE_INTERFACE_H
  3. #include "Bullet3OpenCL/Initialize/b3OpenCLInclude.h"
  4. #include "Bullet3Common/b3Vector3.h"
  5. #include "b3SapAabb.h"
  6. #include "Bullet3Common/shared/b3Int2.h"
  7. #include "Bullet3Common/shared/b3Int4.h"
  8. #include "Bullet3OpenCL/ParallelPrimitives/b3OpenCLArray.h"
  9. class b3GpuBroadphaseInterface
  10. {
  11. public:
  12. typedef class b3GpuBroadphaseInterface*(CreateFunc)(cl_context ctx, cl_device_id device, cl_command_queue q);
  13. virtual ~b3GpuBroadphaseInterface()
  14. {
  15. }
  16. virtual void createProxy(const b3Vector3& aabbMin, const b3Vector3& aabbMax, int userPtr, int collisionFilterGroup, int collisionFilterMask) = 0;
  17. virtual void createLargeProxy(const b3Vector3& aabbMin, const b3Vector3& aabbMax, int userPtr, int collisionFilterGroup, int collisionFilterMask) = 0;
  18. virtual void calculateOverlappingPairs(int maxPairs) = 0;
  19. virtual void calculateOverlappingPairsHost(int maxPairs) = 0;
  20. //call writeAabbsToGpu after done making all changes (createProxy etc)
  21. virtual void writeAabbsToGpu() = 0;
  22. virtual cl_mem getAabbBufferWS() = 0;
  23. virtual int getNumOverlap() = 0;
  24. virtual cl_mem getOverlappingPairBuffer() = 0;
  25. virtual b3OpenCLArray<b3SapAabb>& getAllAabbsGPU() = 0;
  26. virtual b3AlignedObjectArray<b3SapAabb>& getAllAabbsCPU() = 0;
  27. virtual b3OpenCLArray<b3Int4>& getOverlappingPairsGPU() = 0;
  28. virtual b3OpenCLArray<int>& getSmallAabbIndicesGPU() = 0;
  29. virtual b3OpenCLArray<int>& getLargeAabbIndicesGPU() = 0;
  30. };
  31. #endif //B3_GPU_BROADPHASE_INTERFACE_H