JOGL v2.6.0-rc-20250706
JOGL, High-Performance Graphics Binding for Java™ (public API).
SyncMatrix4f16.java
Go to the documentation of this file.
1/**
2 * Copyright 2023 JogAmp Community. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification, are
5 * permitted provided that the following conditions are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright notice, this list of
8 * conditions and the following disclaimer.
9 *
10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11 * of conditions and the following disclaimer in the documentation and/or other materials
12 * provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
15 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 *
24 * The views and conclusions contained in the software and documentation are those of the
25 * authors and should not be interpreted as representing official policies, either expressed
26 * or implied, of JogAmp Community.
27 */
28package com.jogamp.math.util;
29
30import java.nio.Buffer;
31import java.nio.FloatBuffer;
32
33import com.jogamp.math.Matrix4f;
34
35/** {@link SyncBuffer} {@link SyncMatrix4f} implementation for a single underlying {@link Matrix4f} using one {@code float[16]} backing array. */
36public final class SyncMatrix4f16 implements SyncMatrix4f {
37 private final Matrix4f mat;
38 private final float[] f16;
39 private final FloatBuffer fbuf;
40 private final SyncAction action = new SyncAction() {
41 @Override
42 public void sync() { mat.get(f16); }
43 };
44
45 public SyncMatrix4f16() {
46 this.mat = new Matrix4f();
47 this.f16 = new float[16];
48 this.fbuf = FloatBuffer.wrap(f16);
49 }
50
51 public SyncMatrix4f16(final Matrix4f m) {
52 this.mat = m;
53 this.f16 = new float[16];
54 this.fbuf = FloatBuffer.wrap(f16);
55 }
56
57 @Override
58 public SyncAction getAction() { return action; }
59
60 @Override
61 public Buffer getBuffer() { return fbuf; }
62
63 @Override
64 public SyncBuffer sync() { getAction().sync(); return this; }
65
66 @Override
67 public Buffer getSyncBuffer() { getAction().sync(); return fbuf; }
68
69 @Override
70 public Matrix4f getMatrix() { return mat; }
71
72 @Override
73 public FloatBuffer getSyncFloats() { getAction().sync(); return fbuf; }
74}
Basic 4x4 float matrix implementation using fields for intensive use-cases (host operations).
Definition: Matrix4f.java:89
float get(final int i)
Gets the ith component, 0 <= i < 16.
Definition: Matrix4f.java:279
SyncBuffer SyncMatrix4f implementation for a single underlying Matrix4f using one float[16] backing a...
SyncAction getAction()
Return the SyncAction.
FloatBuffer getSyncFloats()
Return the FloatBuffer after synchronizing it w/ the underlying getMatrix().
Buffer getSyncBuffer()
Return the Buffer after synchronizing it.
Buffer getBuffer()
Return the Buffer, i.e.
Matrix4f getMatrix()
Return the underlying Matrix4f, used to synchronize to the getBuffer().
SyncBuffer sync()
Synchronizes the underlying data before usage.
Specific data synchronization action implemented by the data provider to update the buffer with the u...
Definition: SyncAction.java:38
void sync()
Synchronizes the buffer with the underlying data before usage.
Convenient tuple of a SyncAction and Buffer.
Definition: SyncBuffer.java:40
SyncBuffer interface with a single underlying Matrix4f, used in SyncMatrix4f16 and PMVMatrix4f.