116 lines
2.5 KiB
Java
116 lines
2.5 KiB
Java
package net.minecraft.client.renderer.texture;
|
|
|
|
import com.mojang.blaze3d.platform.GlStateManager;
|
|
import com.mojang.blaze3d.platform.TextureUtil;
|
|
import com.mojang.blaze3d.systems.RenderSystem;
|
|
import net.fabricmc.api.EnvType;
|
|
import net.fabricmc.api.Environment;
|
|
import net.minecraft.util.TriState;
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public abstract class AbstractTexture implements AutoCloseable {
|
|
public static final int NOT_ASSIGNED = -1;
|
|
protected int id = -1;
|
|
protected boolean defaultBlur;
|
|
private int wrapS = 10497;
|
|
private int wrapT = 10497;
|
|
private int minFilter = 9986;
|
|
private int magFilter = 9729;
|
|
|
|
public void setClamp(boolean clamp) {
|
|
RenderSystem.assertOnRenderThreadOrInit();
|
|
int i;
|
|
int j;
|
|
if (clamp) {
|
|
i = 33071;
|
|
j = 33071;
|
|
} else {
|
|
i = 10497;
|
|
j = 10497;
|
|
}
|
|
|
|
boolean bl = this.wrapS != i;
|
|
boolean bl2 = this.wrapT != j;
|
|
if (bl || bl2) {
|
|
this.bind();
|
|
if (bl) {
|
|
GlStateManager._texParameter(3553, 10242, i);
|
|
this.wrapS = i;
|
|
}
|
|
|
|
if (bl2) {
|
|
GlStateManager._texParameter(3553, 10243, j);
|
|
this.wrapT = j;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void setFilter(TriState blur, boolean mipmap) {
|
|
this.setFilter(blur.toBoolean(this.defaultBlur), mipmap);
|
|
}
|
|
|
|
/**
|
|
* @param mipmap {@code true} if a mipmap is being used (mip level is greater than 0)
|
|
*/
|
|
public void setFilter(boolean blur, boolean mipmap) {
|
|
RenderSystem.assertOnRenderThreadOrInit();
|
|
int i;
|
|
int j;
|
|
if (blur) {
|
|
i = mipmap ? 9987 : 9729;
|
|
j = 9729;
|
|
} else {
|
|
i = mipmap ? 9986 : 9728;
|
|
j = 9728;
|
|
}
|
|
|
|
boolean bl = this.minFilter != i;
|
|
boolean bl2 = this.magFilter != j;
|
|
if (bl2 || bl) {
|
|
this.bind();
|
|
if (bl) {
|
|
GlStateManager._texParameter(3553, 10241, i);
|
|
this.minFilter = i;
|
|
}
|
|
|
|
if (bl2) {
|
|
GlStateManager._texParameter(3553, 10240, j);
|
|
this.magFilter = j;
|
|
}
|
|
}
|
|
}
|
|
|
|
public int getId() {
|
|
RenderSystem.assertOnRenderThreadOrInit();
|
|
if (this.id == -1) {
|
|
this.id = TextureUtil.generateTextureId();
|
|
}
|
|
|
|
return this.id;
|
|
}
|
|
|
|
public void releaseId() {
|
|
if (!RenderSystem.isOnRenderThread()) {
|
|
RenderSystem.recordRenderCall(() -> {
|
|
if (this.id != -1) {
|
|
TextureUtil.releaseTextureId(this.id);
|
|
this.id = -1;
|
|
}
|
|
});
|
|
} else if (this.id != -1) {
|
|
TextureUtil.releaseTextureId(this.id);
|
|
this.id = -1;
|
|
}
|
|
}
|
|
|
|
public void bind() {
|
|
if (!RenderSystem.isOnRenderThreadOrInit()) {
|
|
RenderSystem.recordRenderCall(() -> GlStateManager._bindTexture(this.getId()));
|
|
} else {
|
|
GlStateManager._bindTexture(this.getId());
|
|
}
|
|
}
|
|
|
|
public void close() {
|
|
}
|
|
}
|