minecraft-src/com/mojang/blaze3d/buffers/GpuBuffer.java
2025-09-18 12:27:44 +00:00

59 lines
1.5 KiB
Java

package com.mojang.blaze3d.buffers;
import com.mojang.blaze3d.DontObfuscate;
import java.nio.ByteBuffer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@Environment(EnvType.CLIENT)
@DontObfuscate
public abstract class GpuBuffer implements AutoCloseable {
public static final int USAGE_MAP_READ = 1;
public static final int USAGE_MAP_WRITE = 2;
public static final int USAGE_HINT_CLIENT_STORAGE = 4;
public static final int USAGE_COPY_DST = 8;
public static final int USAGE_COPY_SRC = 16;
public static final int USAGE_VERTEX = 32;
public static final int USAGE_INDEX = 64;
public static final int USAGE_UNIFORM = 128;
public static final int USAGE_UNIFORM_TEXEL_BUFFER = 256;
private final int usage;
public int size;
public GpuBuffer(int i, int j) {
this.size = j;
this.usage = i;
}
public int size() {
return this.size;
}
public int usage() {
return this.usage;
}
public abstract boolean isClosed();
public abstract void close();
public GpuBufferSlice slice(int i, int j) {
if (i >= 0 && j >= 0 && i + j <= this.size) {
return new GpuBufferSlice(this, i, j);
} else {
throw new IllegalArgumentException("Offset of " + i + " and length " + j + " would put new slice outside buffer's range (of 0," + j + ")");
}
}
public GpuBufferSlice slice() {
return new GpuBufferSlice(this, 0, this.size);
}
@Environment(EnvType.CLIENT)
@DontObfuscate
public interface MappedView extends AutoCloseable {
ByteBuffer data();
void close();
}
}