hadean/src/main/java/xyz/valnet/engine/shaders/SimpleShader.java

53 lines
1.1 KiB
Java
Raw Normal View History

2022-05-18 07:46:03 -04:00
package xyz.valnet.engine.shaders;
import static org.lwjgl.opengl.GL20.*;
2023-01-27 09:56:56 -05:00
import java.util.Stack;
import xyz.valnet.engine.graphics.Color;
2022-05-18 07:46:03 -04:00
public class SimpleShader extends Shader {
2023-01-27 09:56:56 -05:00
private Stack<Color> colorStack = new Stack<Color>();
2022-05-18 07:46:03 -04:00
public final static int COLOR = 1;
public final static int TEX_COORD = 2;
public SimpleShader(String vertPath, String fragPath) {
super(vertPath, fragPath);
2023-07-01 15:31:07 -04:00
pushColor(Color.white);
2022-05-18 07:46:03 -04:00
}
2023-01-27 09:56:56 -05:00
public void pushColor(Color color) {
2022-05-18 07:46:03 -04:00
colorStack.push(color);
setUniform4f("uColor", color);
}
2023-01-27 09:56:56 -05:00
public void swapColor(Color color) {
2022-05-18 07:46:03 -04:00
popColor();
pushColor(color);
}
2022-12-25 11:34:53 -05:00
public void clearColorStack() {
colorStack.clear();
}
2022-05-18 07:46:03 -04:00
public void popColor() {
colorStack.pop();
2023-01-27 09:56:56 -05:00
Color newColor = colorStack.peek();
2022-05-18 07:46:03 -04:00
if(newColor == null) {
2023-01-27 09:56:56 -05:00
setUniform4f("uColor", Color.white);
2022-05-18 07:46:03 -04:00
return;
}
setUniform4f("uColor", newColor);
}
@Override
protected void bindAttributes(int program) {
glBindAttribLocation(program, COLOR, "Color");
glBindAttribLocation(program, TEX_COORD, "TexCoord");
}
}