JOGL v2.6.0-rc-20250712
JOGL, High-Performance Graphics Binding for Java™ (public API).
SyncMatrices4f16.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 SyncMatrices4f16} implementation for multiple underlying {@link Matrix4f} instances using one {@code float[16*n]} backing array. */
36public final class SyncMatrices4f16 implements SyncMatrices4f {
37 private final Matrix4f[] mats;
38 private final float[] f16s;
39 private final FloatBuffer fbuf;
40 private final SyncAction action = new SyncAction() {
41 @Override
42 public void sync() {
43 int ioff = 0;
44 for(int i=0; i<mats.length; ++i, ioff+=16) {
45 mats[i].get(f16s, ioff);
46 }
47 }
48 };
49
50 public SyncMatrices4f16(final Matrix4f[] mats) {
51 this.mats = mats;
52 this.f16s = new float[16*mats.length];
53 this.fbuf = FloatBuffer.wrap(f16s);
54 }
55
56 @Override
57 public SyncAction getAction() { return action; }
58
59 @Override
60 public Buffer getBuffer() { return fbuf; }
61
62 @Override
63 public SyncBuffer sync() { getAction().sync(); return this; }
64
65 @Override
66 public Buffer getSyncBuffer() { getAction().sync(); return fbuf; }
67
68 @Override
69 public Matrix4f[] getMatrices() { return mats; }
70
71 @Override
72 public FloatBuffer getSyncFloats() { getAction().sync(); return fbuf; }
73
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 SyncMatrices4f16 implementation for multiple underlying Matrix4f instances using one float...
SyncAction getAction()
Return the SyncAction.
Buffer getBuffer()
Return the Buffer, i.e.
Buffer getSyncBuffer()
Return the Buffer after synchronizing it.
SyncBuffer sync()
Synchronizes the underlying data before usage.
Matrix4f[] getMatrices()
Return the underlying multiple Matrix4f, used to synchronize to the getBuffer().
FloatBuffer getSyncFloats()
Return the FloatBuffer after synchronizing it w/ the underlying getMatrices().
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 with a multiple underlying Matrix4f, used in SyncMatrices4f16 and PMVMatrix4f