Class XrHandMeshVertexBufferMSFT
- All Implemented Interfaces:
AutoCloseable,org.lwjgl.system.NativeResource,org.lwjgl.system.Pointer
Description
An application should preallocate the vertices array using the XrSystemHandTrackingMeshPropertiesMSFT::maxHandMeshVertexCount returned from GetSystemProperties. In this way, the application can avoid possible insufficient buffer sizes for each query, and therefore avoid reallocating memory each frame.
The input vertexCapacityInput must not be 0, and vertices must not be NULL, or else the runtime must return ERROR_VALIDATION_FAILURE on calls to the UpdateHandMeshMSFT function.
If the input vertexCapacityInput is not sufficient to contain all output vertices, the runtime must return ERROR_SIZE_INSUFFICIENT on calls to the UpdateHandMeshMSFT, do not change content in vertexUpdateTime and vertices, and return 0 for vertexCountOutput.
If the input vertexCapacityInput is equal to or larger than the XrSystemHandTrackingMeshPropertiesMSFT::maxHandMeshVertexCount returned from GetSystemProperties, the runtime must not return ERROR_SIZE_INSUFFICIENT on calls to the UpdateHandMeshMSFT because of insufficient vertex buffer size.
If the input vertexUpdateTime is 0, and the capacity of the vertices array is sufficient, and hand mesh tracking is active, the runtime must return the latest non-zero vertexUpdateTime, and fill in the vertexCountOutput and vertices fields.
If the input vertexUpdateTime is not 0, the runtime can either return without changing vertexCountOutput or the content in vertices, and return FALSE for XrHandMeshMSFT::vertexBufferChanged indicating the vertices are not changed; or return a new non-zero vertexUpdateTime and fill in latest data in vertexCountOutput and vertices and return TRUE for XrHandMeshMSFT::vertexBufferChanged indicating the vertices are updated to a newer version.
An application can keep the XrHandMeshVertexBufferMSFT structure for each frame in frame loop and use the returned vertexUpdateTime to detect the changes of the content in vertices. The application can therefore avoid unnecessary processing of vertices, such as coping them to GPU memory.
Valid Usage (Implicit)
- The
XR_MSFT_hand_tracking_meshextension must be enabled prior to usingXrHandMeshVertexBufferMSFT - If
vertexCapacityInputis not 0,verticesmust be a pointer to an array ofvertexCapacityInputXrHandMeshVertexMSFTstructures
See Also
XrHandMeshMSFT, XrHandMeshVertexMSFT, XrSystemHandTrackingMeshPropertiesMSFT, UpdateHandMeshMSFT
Layout
struct XrHandMeshVertexBufferMSFT {
XrTime vertexUpdateTime();
uint32_t vertexCapacityInput();
uint32_t vertexCountOutput();
XrHandMeshVertexMSFT * vertices();
}-
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 size 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.Fields inherited from interface org.lwjgl.system.Pointer
BITS32, BITS64, CLONG_SHIFT, CLONG_SIZE, POINTER_SHIFT, POINTER_SIZE -
Constructor Summary
ConstructorsConstructorDescriptionXrHandMeshVertexBufferMSFT(ByteBuffer container) Creates aXrHandMeshVertexBufferMSFTinstance at the current position of the specifiedByteBuffercontainer. -
Method Summary
Modifier and TypeMethodDescriptionstatic XrHandMeshVertexBufferMSFTcalloc()Returns a newXrHandMeshVertexBufferMSFTinstance allocated withmemCalloc.calloc(int capacity) Returns a newXrHandMeshVertexBufferMSFT.Bufferinstance allocated withmemCalloc.calloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newXrHandMeshVertexBufferMSFT.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.static XrHandMeshVertexBufferMSFTcalloc(org.lwjgl.system.MemoryStack stack) Returns a newXrHandMeshVertexBufferMSFTinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.static XrHandMeshVertexBufferMSFTcreate()Returns a newXrHandMeshVertexBufferMSFTinstance allocated withBufferUtils.create(int capacity) Returns a newXrHandMeshVertexBufferMSFT.Bufferinstance allocated withBufferUtils.static XrHandMeshVertexBufferMSFTcreate(long address) Returns a newXrHandMeshVertexBufferMSFTinstance for the specified memory address.create(long address, int capacity) Create aXrHandMeshVertexBufferMSFT.Bufferinstance at the specified memory.static @Nullable XrHandMeshVertexBufferMSFTcreateSafe(long address) static @Nullable XrHandMeshVertexBufferMSFT.BuffercreateSafe(long address, int capacity) static XrHandMeshVertexBufferMSFTmalloc()Returns a newXrHandMeshVertexBufferMSFTinstance allocated withmemAlloc.malloc(int capacity) Returns a newXrHandMeshVertexBufferMSFT.Bufferinstance allocated withmemAlloc.malloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newXrHandMeshVertexBufferMSFT.Bufferinstance allocated on the specifiedMemoryStack.static XrHandMeshVertexBufferMSFTmalloc(org.lwjgl.system.MemoryStack stack) Returns a newXrHandMeshVertexBufferMSFTinstance allocated on the specifiedMemoryStack.static intnvertexCapacityInput(long struct) Unsafe version ofvertexCapacityInput().static voidnvertexCapacityInput(long struct, int value) Sets the specified value to thevertexCapacityInputfield of the specifiedstruct.static intnvertexCountOutput(long struct) Unsafe version ofvertexCountOutput().static voidnvertexCountOutput(long struct, int value) Unsafe version ofvertexCountOutput.static longnvertexUpdateTime(long struct) Unsafe version ofvertexUpdateTime().static voidnvertexUpdateTime(long struct, long value) Unsafe version ofvertexUpdateTime.static @Nullable XrHandMeshVertexMSFT.Buffernvertices(long struct) Unsafe version ofvertices().static voidnvertices(long struct, @Nullable XrHandMeshVertexMSFT.Buffer value) Unsafe version ofvertices.set(long vertexUpdateTime, int vertexCapacityInput, int vertexCountOutput, @Nullable XrHandMeshVertexMSFT.Buffer vertices) Initializes this struct with the specified values.Copies the specified struct data to this struct.intsizeof()inta positiveuint32_tdescribes the capacity of theverticesarray.vertexCapacityInput(int value) Sets the specified value to thevertexCapacityInput()field.intauint32_tfilled in by the runtime with the count of vertices written invertices.vertexCountOutput(int value) Sets the specified value to thevertexCountOutput()field.longanXrTimerepresenting the time when the runtime receives the vertex buffer content or 0 to indicate a request to retrieve latest vertices regardless of existing content invertices.vertexUpdateTime(long value) Sets the specified value to thevertexUpdateTime()field.@Nullable XrHandMeshVertexMSFT.Buffervertices()an array ofXrHandMeshVertexMSFTfilled in by the runtime, specifying the vertices of the hand mesh including the position and normal vector in the hand mesh space.vertices(@Nullable XrHandMeshVertexMSFT.Buffer value) Sets the address of the specifiedXrHandMeshVertexMSFT.Bufferto thevertices()field.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. -
VERTEXUPDATETIME
public static final int VERTEXUPDATETIMEThe struct member offsets. -
VERTEXCAPACITYINPUT
public static final int VERTEXCAPACITYINPUTThe struct member offsets. -
VERTEXCOUNTOUTPUT
public static final int VERTEXCOUNTOUTPUTThe struct member offsets. -
VERTICES
public static final int VERTICESThe struct member offsets.
-
-
Constructor Details
-
XrHandMeshVertexBufferMSFT
Creates aXrHandMeshVertexBufferMSFTinstance 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<XrHandMeshVertexBufferMSFT>
-
vertexUpdateTime
public long vertexUpdateTime()anXrTimerepresenting the time when the runtime receives the vertex buffer content or 0 to indicate a request to retrieve latest vertices regardless of existing content invertices. -
vertexCapacityInput
public int vertexCapacityInput()a positiveuint32_tdescribes the capacity of theverticesarray. -
vertexCountOutput
public int vertexCountOutput()auint32_tfilled in by the runtime with the count of vertices written invertices. -
vertices
an array ofXrHandMeshVertexMSFTfilled in by the runtime, specifying the vertices of the hand mesh including the position and normal vector in the hand mesh space. -
vertexUpdateTime
Sets the specified value to thevertexUpdateTime()field. -
vertexCapacityInput
Sets the specified value to thevertexCapacityInput()field. -
vertexCountOutput
Sets the specified value to thevertexCountOutput()field. -
vertices
Sets the address of the specifiedXrHandMeshVertexMSFT.Bufferto thevertices()field. -
set
public XrHandMeshVertexBufferMSFT set(long vertexUpdateTime, int vertexCapacityInput, int vertexCountOutput, @Nullable XrHandMeshVertexMSFT.Buffer vertices) 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 newXrHandMeshVertexBufferMSFTinstance allocated withmemAlloc. The instance must be explicitly freed. -
calloc
Returns a newXrHandMeshVertexBufferMSFTinstance allocated withmemCalloc. The instance must be explicitly freed. -
create
Returns a newXrHandMeshVertexBufferMSFTinstance allocated withBufferUtils. -
create
Returns a newXrHandMeshVertexBufferMSFTinstance for the specified memory address. -
createSafe
-
malloc
Returns a newXrHandMeshVertexBufferMSFT.Bufferinstance allocated withmemAlloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
calloc
Returns a newXrHandMeshVertexBufferMSFT.Bufferinstance allocated withmemCalloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
create
Returns a newXrHandMeshVertexBufferMSFT.Bufferinstance allocated withBufferUtils.- Parameters:
capacity- the buffer capacity
-
create
Create aXrHandMeshVertexBufferMSFT.Bufferinstance at the specified memory.- Parameters:
address- the memory addresscapacity- the buffer capacity
-
createSafe
-
malloc
Returns a newXrHandMeshVertexBufferMSFTinstance allocated on the specifiedMemoryStack.- Parameters:
stack- the stack from which to allocate
-
calloc
Returns a newXrHandMeshVertexBufferMSFTinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
stack- the stack from which to allocate
-
malloc
public static XrHandMeshVertexBufferMSFT.Buffer malloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newXrHandMeshVertexBufferMSFT.Bufferinstance allocated on the specifiedMemoryStack.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
calloc
public static XrHandMeshVertexBufferMSFT.Buffer calloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newXrHandMeshVertexBufferMSFT.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
nvertexUpdateTime
public static long nvertexUpdateTime(long struct) Unsafe version ofvertexUpdateTime(). -
nvertexCapacityInput
public static int nvertexCapacityInput(long struct) Unsafe version ofvertexCapacityInput(). -
nvertexCountOutput
public static int nvertexCountOutput(long struct) Unsafe version ofvertexCountOutput(). -
nvertices
Unsafe version ofvertices(). -
nvertexUpdateTime
public static void nvertexUpdateTime(long struct, long value) Unsafe version ofvertexUpdateTime. -
nvertexCapacityInput
public static void nvertexCapacityInput(long struct, int value) Sets the specified value to thevertexCapacityInputfield of the specifiedstruct. -
nvertexCountOutput
public static void nvertexCountOutput(long struct, int value) Unsafe version ofvertexCountOutput. -
nvertices
Unsafe version ofvertices.
-