Entire project
This commit is contained in:
commit
d413e5ee0f
231 changed files with 49155 additions and 0 deletions
97
src/com/gnarly/engine/texture/Texture.java
Normal file
97
src/com/gnarly/engine/texture/Texture.java
Normal file
|
@ -0,0 +1,97 @@
|
|||
package com.gnarly.engine.texture;
|
||||
|
||||
import static org.lwjgl.opengl.GL11.GL_CLAMP;
|
||||
import static org.lwjgl.opengl.GL11.GL_NEAREST;
|
||||
import static org.lwjgl.opengl.GL11.GL_RGBA;
|
||||
import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D;
|
||||
import static org.lwjgl.opengl.GL11.GL_TEXTURE_MAG_FILTER;
|
||||
import static org.lwjgl.opengl.GL11.GL_TEXTURE_MIN_FILTER;
|
||||
import static org.lwjgl.opengl.GL11.GL_TEXTURE_WRAP_S;
|
||||
import static org.lwjgl.opengl.GL11.GL_TEXTURE_WRAP_T;
|
||||
import static org.lwjgl.opengl.GL11.GL_UNSIGNED_BYTE;
|
||||
import static org.lwjgl.opengl.GL11.glBindTexture;
|
||||
import static org.lwjgl.opengl.GL11.glDeleteTextures;
|
||||
import static org.lwjgl.opengl.GL11.glGenTextures;
|
||||
import static org.lwjgl.opengl.GL11.glTexImage2D;
|
||||
import static org.lwjgl.opengl.GL11.glTexParameterf;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import org.lwjgl.BufferUtils;
|
||||
|
||||
import com.gnarly.engine.display.Window;
|
||||
|
||||
public class Texture {
|
||||
|
||||
protected int id, width, height;
|
||||
|
||||
public Texture(String name) {
|
||||
BufferedImage bi = null;
|
||||
try {
|
||||
bi = ImageIO.read(new File("res/img/" + Window.resolution + "/" + name));
|
||||
} catch (IOException e) {
|
||||
try {
|
||||
bi = ImageIO.read(new File("res/img/const/" + name));
|
||||
} catch (IOException ex) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (bi != null) {
|
||||
width = bi.getWidth();
|
||||
height = bi.getHeight();
|
||||
int[] pixels = bi.getRGB(0, 0, width, height, null, 0, width);
|
||||
ByteBuffer buffer = BufferUtils.createByteBuffer(width * height * 4);
|
||||
|
||||
for (int i = 0; i < height; i++) {
|
||||
for (int j = 0; j < width; j++) {
|
||||
int pixel = pixels[i * width + j];
|
||||
buffer.put((byte)((pixel >> 16) & 0xFF)); // Red
|
||||
buffer.put((byte)((pixel >> 8) & 0xFF)); // Green
|
||||
buffer.put((byte)((pixel ) & 0xFF)); // Blue
|
||||
buffer.put((byte)((pixel >> 24) & 0xFF)); // Alpha
|
||||
}
|
||||
}
|
||||
buffer.flip();
|
||||
|
||||
id = glGenTextures();
|
||||
bind();
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
|
||||
unbind();
|
||||
}
|
||||
}
|
||||
|
||||
public Texture(int id, int width, int height) {
|
||||
this.id = id;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
public int getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
public void bind() {
|
||||
glBindTexture(GL_TEXTURE_2D, id);
|
||||
}
|
||||
|
||||
public void unbind() {
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
glDeleteTextures(id);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue