47 lines
1.2 KiB
Java
47 lines
1.2 KiB
Java
package speiger.src.coreengine.rendering.utils.values;
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
import speiger.src.coreengine.rendering.utils.values.IGLValue.IGLMode;
|
|
|
|
public enum GLMode implements IGLMode {
|
|
POINT(GL11.GL_POINT, 1),
|
|
LINES(GL11.GL_LINES, 2),
|
|
LINE_STRIP(GL11.GL_LINE_STRIP, 2, true),
|
|
LINE_LOOP(GL11.GL_LINE_LOOP, 2, true),
|
|
TRIANGLES(GL11.GL_TRIANGLES, 3),
|
|
TRIANGLE_STRIP(GL11.GL_TRIANGLE_STRIP, 3, true),
|
|
TRIANGLE_FAN(GL11.GL_TRIANGLE_FAN, 3, true),
|
|
QUADS(GL11.GL_QUADS, 4);
|
|
|
|
int glMode;
|
|
int length;
|
|
boolean isConnective;
|
|
|
|
private GLMode(int glMode, int length) {
|
|
this(glMode, length, false);
|
|
}
|
|
|
|
private GLMode(int glMode, int length, boolean isConnective) {
|
|
this.glMode = glMode;
|
|
this.length = length;
|
|
this.isConnective = isConnective;
|
|
GL11.glDrawElements(glMode, length, glMode, length);
|
|
}
|
|
|
|
@Override
|
|
public int glValue() { return glMode; }
|
|
@Override
|
|
public int primitiveLength() { return length; }
|
|
@Override
|
|
public boolean isConnective() { return isConnective; }
|
|
@Override
|
|
public int indeciesCount(int vertecies) {
|
|
return switch(this) {
|
|
case POINT, LINE_STRIP, TRIANGLES, TRIANGLE_STRIP, TRIANGLE_FAN -> vertecies;
|
|
case LINES, QUADS -> vertecies / 4 * 6;
|
|
default -> 0;
|
|
};
|
|
}
|
|
}
|