1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
package makamys.neodymium.renderer;
import java.nio.ByteBuffer;
import java.nio.IntBuffer;
import makamys.neodymium.util.Util;
/** A generic mesh that can be sent to the GPU for rendering. */
public abstract class Mesh {
/** Can be null, unless gpuStatus is SENT */
public ByteBuffer buffer;
public int quadCount;
public boolean visible;
public GPUStatus gpuStatus = GPUStatus.UNSENT;
public int iFirst = -1, iCount = -1;
public long offset = -1;
public int pass;
int x, y, z;
public QuadNormal normal = QuadNormal.NONE;
public abstract int getStride();
public double distSq(double x2, double y2, double z2) {
return Util.distSq(x + 0.5, y + 0.5, z + 0.5, x2, y2, z2);
}
public int bufferSize() {
return buffer == null ? 0 : buffer.limit();
}
public long getEnd() {
return offset + bufferSize();
}
public void prepareBuffer() {}
public void destroyBuffer() {}
public void update() {}
public static enum GPUStatus {
UNSENT, SENT, PENDING_DELETE
}
public int writeToIndexBuffer(IntBuffer piFirst, IntBuffer piCount, int cameraXDiv, int cameraYDiv, int cameraZDiv) {
piFirst.put(iFirst);
piCount.put(iCount);
return 1;
}
}
|