Jolt Physics
A multi core friendly Game Physics Engine
Loading...
Searching...
No Matches
ComputeBuffer.h
Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
2// SPDX-FileCopyrightText: 2025 Jorrit Rouwe
3// SPDX-License-Identifier: MIT
4
5#pragma once
6
9
11
13class JPH_EXPORT ComputeBuffer : public RefTarget<ComputeBuffer>, public NonCopyable
14{
15public:
17
19 enum class EType
20 {
21 UploadBuffer,
22 ReadbackBuffer,
23 ConstantBuffer,
24 Buffer,
25 RWBuffer,
26 };
27
29 ComputeBuffer(EType inType, uint64 inSize, uint inStride) : mType(inType), mSize(inSize), mStride(inStride) { }
30 virtual ~ComputeBuffer() = default;
31
33 EType GetType() const { return mType; }
34 uint64 GetSize() const { return mSize; }
35 uint GetStride() const { return mStride; }
36
38 enum class EMode
39 {
40 Read,
41 Write,
42 };
43
45 void * Map(EMode inMode) { return MapInternal(inMode); }
46 template <typename T> T * Map(EMode inMode) { JPH_ASSERT(sizeof(T) == mStride); return reinterpret_cast<T *>(MapInternal(inMode)); }
47 virtual void Unmap() = 0;
48
52
53protected:
57
58 virtual void * MapInternal(EMode inMode) = 0;
59};
60
#define JPH_EXPORT
Definition Core.h:275
std::uint64_t uint64
Definition Core.h:504
unsigned int uint
Definition Core.h:500
#define JPH_NAMESPACE_END
Definition Core.h:425
#define JPH_NAMESPACE_BEGIN
Definition Core.h:419
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:50
Buffer that can be read from / written to by a compute shader.
Definition ComputeBuffer.h:14
uint mStride
Definition ComputeBuffer.h:56
EType mType
Definition ComputeBuffer.h:54
virtual void Unmap()=0
uint64 mSize
Definition ComputeBuffer.h:55
virtual void * MapInternal(EMode inMode)=0
virtual ~ComputeBuffer()=default
EType GetType() const
Properties.
Definition ComputeBuffer.h:33
void * Map(EMode inMode)
Map / unmap buffer (get pointer to data).
Definition ComputeBuffer.h:45
ComputeBuffer(EType inType, uint64 inSize, uint inStride)
Constructor / Destructor.
Definition ComputeBuffer.h:29
EMode
Mode in which the buffer is accessed.
Definition ComputeBuffer.h:39
EType
Type of buffer.
Definition ComputeBuffer.h:20
uint GetStride() const
Definition ComputeBuffer.h:35
T * Map(EMode inMode)
Definition ComputeBuffer.h:46
virtual Ref< ComputeBuffer > CreateReadBackBuffer() const =0
uint64 GetSize() const
Definition ComputeBuffer.h:34
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
Definition Reference.h:107
Definition Reference.h:35