Class XrHapticPcmVibrationFB
- All Implemented Interfaces:
AutoCloseable,org.lwjgl.system.NativeResource,org.lwjgl.system.Pointer
Description
This structure describes a PCM haptic effect.
The runtime may resample the provided samples in the buffer, and maintain an internal buffer which should be of MAX_HAPTIC_PCM_BUFFER_SIZE_FB length. The resampling should happen based on the sampleRate and the device’s sample rate.
If append is TRUE and a preceding XrHapticPcmVibrationFB haptic effect on this action has not yet completed, then the runtime must finish playing the preceding samples and then play the new haptic effect. If a preceding haptic event on this action has not yet completed, and either the preceding effect is not an XrHapticPcmVibrationFB haptic effect or append is FALSE, the runtime must cancel the preceding incomplete effects on that action and start playing the new haptic effect, as usual for the core specification.
When append is true and a preceding XrHapticPcmVibrationFB haptic effect on this action has not yet completed, then the application can provide a different sampleRate in the new haptic effect.
The runtime must populate the samplesConsumed with the count of the samples from buffer which were consumed. The samplesConsumed is populated before the ApplyHapticFeedback returns.
Valid Usage (Implicit)
- The
XR_FB_haptic_pcmextension must be enabled prior to usingXrHapticPcmVibrationFB typemust beTYPE_HAPTIC_PCM_VIBRATION_FBnextmust beNULLor a valid pointer to the next structure in a structure chainbuffermust be a pointer to an array ofbufferSizefloatvaluessamplesConsumedmust be a pointer to auint32_tvalue- The
bufferSizeparameter must be greater than 0
Layout
struct XrHapticPcmVibrationFB {
XrStructureType type();
void const * next();
uint32_t bufferSize();
float const * buffer();
float sampleRate();
XrBool32 append();
uint32_t * samplesConsumed(int);
}-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class org.lwjgl.system.Struct
org.lwjgl.system.Struct.StructValidationNested classes/interfaces inherited from interface org.lwjgl.system.Pointer
org.lwjgl.system.Pointer.Default -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intThe struct alignment in bytes.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct size in bytes.static final intThe struct member offsets.Fields inherited from interface org.lwjgl.system.Pointer
BITS32, BITS64, CLONG_SHIFT, CLONG_SIZE, POINTER_SHIFT, POINTER_SIZE -
Constructor Summary
ConstructorsConstructorDescriptionXrHapticPcmVibrationFB(ByteBuffer container) Creates aXrHapticPcmVibrationFBinstance at the current position of the specifiedByteBuffercontainer. -
Method Summary
Modifier and TypeMethodDescriptionbooleanappend()append(boolean value) Sets the specified value to theappend()field.buffer()a pointer to a float array representing the PCM samples.buffer(FloatBuffer value) Sets the address of the specifiedFloatBufferto thebuffer()field.intthe number of samples in the buffer.static XrHapticPcmVibrationFBcalloc()Returns a newXrHapticPcmVibrationFBinstance allocated withmemCalloc.calloc(int capacity) Returns a newXrHapticPcmVibrationFB.Bufferinstance allocated withmemCalloc.calloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newXrHapticPcmVibrationFB.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.static XrHapticPcmVibrationFBcalloc(org.lwjgl.system.MemoryStack stack) Returns a newXrHapticPcmVibrationFBinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.static XrHapticPcmVibrationFBcreate()Returns a newXrHapticPcmVibrationFBinstance allocated withBufferUtils.create(int capacity) Returns a newXrHapticPcmVibrationFB.Bufferinstance allocated withBufferUtils.static XrHapticPcmVibrationFBcreate(long address) Returns a newXrHapticPcmVibrationFBinstance for the specified memory address.create(long address, int capacity) Create aXrHapticPcmVibrationFB.Bufferinstance at the specified memory.static XrHapticPcmVibrationFBcreate(XrHapticBaseHeader value) Downcasts the specifiedXrHapticBaseHeaderinstance toXrHapticPcmVibrationFB.create(XrHapticBaseHeader.Buffer value) Downcasts the specifiedXrHapticBaseHeader.Bufferinstance toXrHapticPcmVibrationFB.Buffer.static @Nullable XrHapticPcmVibrationFBcreateSafe(long address) static @Nullable XrHapticPcmVibrationFB.BuffercreateSafe(long address, int capacity) static XrHapticPcmVibrationFBmalloc()Returns a newXrHapticPcmVibrationFBinstance allocated withmemAlloc.malloc(int capacity) Returns a newXrHapticPcmVibrationFB.Bufferinstance allocated withmemAlloc.malloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newXrHapticPcmVibrationFB.Bufferinstance allocated on the specifiedMemoryStack.static XrHapticPcmVibrationFBmalloc(org.lwjgl.system.MemoryStack stack) Returns a newXrHapticPcmVibrationFBinstance allocated on the specifiedMemoryStack.static intnappend(long struct) Unsafe version ofappend().static voidnappend(long struct, int value) Unsafe version ofappend.static FloatBuffernbuffer(long struct) Unsafe version ofbuffer.static voidnbuffer(long struct, FloatBuffer value) Unsafe version ofbuffer.static intnbufferSize(long struct) Unsafe version ofbufferSize().static voidnbufferSize(long struct, int value) Sets the specified value to thebufferSizefield of the specifiedstruct.longnext()NULLor a pointer to the next structure in a structure chain.next(long value) Sets the specified value to thenext()field.static longnnext(long struct) Unsafe version ofnext().static voidnnext(long struct, long value) Unsafe version ofnext.static floatnsampleRate(long struct) Unsafe version ofsampleRate().static voidnsampleRate(long struct, float value) Unsafe version ofsampleRate.static IntBuffernsamplesConsumed(long struct, int capacity) Unsafe version ofsamplesConsumed.static voidnsamplesConsumed(long struct, IntBuffer value) Unsafe version ofsamplesConsumed.static intntype(long struct) Unsafe version oftype().static voidntype(long struct, int value) Unsafe version oftype.floatthe number of samples to be played per second, this is used to determine the duration of the haptic effect.sampleRate(float value) Sets the specified value to thesampleRate()field.samplesConsumed(int capacity) samplesConsumed(IntBuffer value) Sets the address of the specifiedIntBufferto thesamplesConsumed(int)field.set(int type, long next, FloatBuffer buffer, float sampleRate, boolean append, IntBuffer samplesConsumed) Initializes this struct with the specified values.Copies the specified struct data to this struct.intsizeof()inttype()theXrStructureTypeof this structure.type(int value) Sets the specified value to thetype()field.Sets theTYPE_HAPTIC_PCM_VIBRATION_FBvalue to thetype()field.static voidvalidate(long struct) Validates pointer members that should not beNULL.Methods inherited from class org.lwjgl.system.Struct
clear, free, isNull, validate, validateMethods inherited from class org.lwjgl.system.Pointer.Default
address, equals, hashCode, toStringMethods inherited from interface org.lwjgl.system.NativeResource
close, free
-
Field Details
-
SIZEOF
public static final int SIZEOFThe struct size in bytes. -
ALIGNOF
public static final int ALIGNOFThe struct alignment in bytes. -
TYPE
public static final int TYPEThe struct member offsets. -
NEXT
public static final int NEXTThe struct member offsets. -
BUFFERSIZE
public static final int BUFFERSIZEThe struct member offsets. -
BUFFER
public static final int BUFFERThe struct member offsets. -
SAMPLERATE
public static final int SAMPLERATEThe struct member offsets. -
APPEND
public static final int APPENDThe struct member offsets. -
SAMPLESCONSUMED
public static final int SAMPLESCONSUMEDThe struct member offsets.
-
-
Constructor Details
-
XrHapticPcmVibrationFB
Creates aXrHapticPcmVibrationFBinstance at the current position of the specifiedByteBuffercontainer. Changes to the buffer's content will be visible to the struct instance and vice versa.The created instance holds a strong reference to the container object.
-
-
Method Details
-
sizeof
public int sizeof()- Specified by:
sizeofin classorg.lwjgl.system.Struct<XrHapticPcmVibrationFB>
-
type
public int type()theXrStructureTypeof this structure. -
next
public long next()NULLor a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension. -
bufferSize
public int bufferSize()the number of samples in the buffer. -
buffer
a pointer to a float array representing the PCM samples. If you consider the haptic effect as a sampled analog audio, then this buffer will contain the samples representing that effect. The values in this buffer are expected to be in the range [-1.0, 1.0]. -
sampleRate
public float sampleRate()the number of samples to be played per second, this is used to determine the duration of the haptic effect. -
append
public boolean append() -
samplesConsumed
- Parameters:
capacity- the number of elements in the returned buffer- Returns:
- a pointer to an unsigned integer; it is populated by runtime, to tell the application about how many samples were consumed from the input
buffer
-
type
Sets the specified value to thetype()field. -
type$Default
Sets theTYPE_HAPTIC_PCM_VIBRATION_FBvalue to thetype()field. -
next
Sets the specified value to thenext()field. -
buffer
Sets the address of the specifiedFloatBufferto thebuffer()field. -
sampleRate
Sets the specified value to thesampleRate()field. -
append
Sets the specified value to theappend()field. -
samplesConsumed
Sets the address of the specifiedIntBufferto thesamplesConsumed(int)field. -
set
public XrHapticPcmVibrationFB set(int type, long next, FloatBuffer buffer, float sampleRate, boolean append, IntBuffer samplesConsumed) Initializes this struct with the specified values. -
set
Copies the specified struct data to this struct.- Parameters:
src- the source struct- Returns:
- this struct
-
malloc
Returns a newXrHapticPcmVibrationFBinstance allocated withmemAlloc. The instance must be explicitly freed. -
calloc
Returns a newXrHapticPcmVibrationFBinstance allocated withmemCalloc. The instance must be explicitly freed. -
create
Returns a newXrHapticPcmVibrationFBinstance allocated withBufferUtils. -
create
Returns a newXrHapticPcmVibrationFBinstance for the specified memory address. -
createSafe
-
create
Downcasts the specifiedXrHapticBaseHeaderinstance toXrHapticPcmVibrationFB. -
malloc
Returns a newXrHapticPcmVibrationFB.Bufferinstance allocated withmemAlloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
calloc
Returns a newXrHapticPcmVibrationFB.Bufferinstance allocated withmemCalloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
create
Returns a newXrHapticPcmVibrationFB.Bufferinstance allocated withBufferUtils.- Parameters:
capacity- the buffer capacity
-
create
Create aXrHapticPcmVibrationFB.Bufferinstance at the specified memory.- Parameters:
address- the memory addresscapacity- the buffer capacity
-
createSafe
-
create
Downcasts the specifiedXrHapticBaseHeader.Bufferinstance toXrHapticPcmVibrationFB.Buffer. -
malloc
Returns a newXrHapticPcmVibrationFBinstance allocated on the specifiedMemoryStack.- Parameters:
stack- the stack from which to allocate
-
calloc
Returns a newXrHapticPcmVibrationFBinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
stack- the stack from which to allocate
-
malloc
public static XrHapticPcmVibrationFB.Buffer malloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newXrHapticPcmVibrationFB.Bufferinstance allocated on the specifiedMemoryStack.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
calloc
public static XrHapticPcmVibrationFB.Buffer calloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newXrHapticPcmVibrationFB.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
ntype
public static int ntype(long struct) Unsafe version oftype(). -
nnext
public static long nnext(long struct) Unsafe version ofnext(). -
nbufferSize
public static int nbufferSize(long struct) Unsafe version ofbufferSize(). -
nbuffer
Unsafe version ofbuffer. -
nsampleRate
public static float nsampleRate(long struct) Unsafe version ofsampleRate(). -
nappend
public static int nappend(long struct) Unsafe version ofappend(). -
nsamplesConsumed
Unsafe version ofsamplesConsumed. -
ntype
public static void ntype(long struct, int value) Unsafe version oftype. -
nnext
public static void nnext(long struct, long value) Unsafe version ofnext. -
nbufferSize
public static void nbufferSize(long struct, int value) Sets the specified value to thebufferSizefield of the specifiedstruct. -
nbuffer
Unsafe version ofbuffer. -
nsampleRate
public static void nsampleRate(long struct, float value) Unsafe version ofsampleRate. -
nappend
public static void nappend(long struct, int value) Unsafe version ofappend. -
nsamplesConsumed
Unsafe version ofsamplesConsumed. -
validate
public static void validate(long struct) Validates pointer members that should not beNULL.- Parameters:
struct- the struct to validate
-