42 lines
1.4 KiB
Java
42 lines
1.4 KiB
Java
package xyz.valnet.engine.graphics;
|
|
|
|
import static org.lwjgl.opengl.GL20.*;
|
|
|
|
import xyz.valnet.engine.shaders.SimpleShader;
|
|
|
|
public class Drawing {
|
|
|
|
private static Texture bound = null;
|
|
|
|
public static void drawSprite(Sprite sprite, int x, int y) {
|
|
drawSprite(sprite, x, y, sprite.width, sprite.height);
|
|
}
|
|
|
|
private static float layer = 0f;
|
|
|
|
public static void setLayer(float layer) {
|
|
Drawing.layer = layer;
|
|
}
|
|
|
|
public static void drawSprite(Sprite sprite, int x, int y, int width, int height) {
|
|
// lazy texture binding
|
|
if(bound != sprite.atlas) {
|
|
if(bound != null) bound.unbind();
|
|
sprite.atlas.bind();
|
|
}
|
|
|
|
glBegin(GL_QUADS);
|
|
glVertexAttrib2f(SimpleShader.TEX_COORD, sprite.sourceBoxUV.x, sprite.sourceBoxUV.y);
|
|
glVertex3f(x, y, layer);
|
|
|
|
glVertexAttrib2f(SimpleShader.TEX_COORD, sprite.sourceBoxUV.x + sprite.sourceBoxUV.z, sprite.sourceBoxUV.y);
|
|
glVertex3f(x + width, y, layer);
|
|
|
|
glVertexAttrib2f(SimpleShader.TEX_COORD, sprite.sourceBoxUV.x + sprite.sourceBoxUV.z, sprite.sourceBoxUV.y + sprite.sourceBoxUV.w);
|
|
glVertex3f(x + width, y + height, layer);
|
|
|
|
glVertexAttrib2f(SimpleShader.TEX_COORD, sprite.sourceBoxUV.x, sprite.sourceBoxUV.y + sprite.sourceBoxUV.w);
|
|
glVertex3f(x, y + height, layer);
|
|
glEnd();
|
|
}
|
|
} |