b3GpuBroadphaseInterface.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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 ,short int collisionFilterGroup,short int collisionFilterMask)=0;
  17. virtual void createLargeProxy(const b3Vector3& aabbMin, const b3Vector3& aabbMax, int userPtr ,short int collisionFilterGroup,short 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