Java Examples for org.lwjgl.opengl.GL11.glTexImage2D
The following java examples will help you to understand the usage of org.lwjgl.opengl.GL11.glTexImage2D. These source code samples are taken from different open source projects.
Example 1
Project: Wolf_game-master File: Texture.java View source code |
public static Texture loadTexture(String name) {
// Load the image
BufferedImage bimg = null;
try {
bimg = ImageIO.read(Texture.class.getResource(name));
} catch (IOException e) {
e.printStackTrace();
System.out.println("Unable to load Texture: " + name);
}
// Gather all the pixels
int[] pixels = new int[bimg.getWidth() * bimg.getHeight()];
bimg.getRGB(0, 0, bimg.getWidth(), bimg.getHeight(), pixels, 0, bimg.getWidth());
// Create a ByteBuffer
ByteBuffer buffer = BufferUtils.createByteBuffer(bimg.getWidth() * bimg.getHeight() * 4);
// Iterate through all the pixels and add them to the ByteBuffer
for (int y = 0; y < bimg.getHeight(); y++) {
for (int x = 0; x < bimg.getWidth(); x++) {
// Select the pixel
int pixel = pixels[y * bimg.getWidth() + x];
// Add the RED component
buffer.put((byte) ((pixel >> 16) & 0xFF));
// Add the GREEN component
buffer.put((byte) ((pixel >> 8) & 0xFF));
// Add the BLUE component
buffer.put((byte) (pixel & 0xFF));
// Add the ALPHA component
buffer.put((byte) ((pixel >> 24) & 0xFF));
}
}
// Reset the read location in the buffer so that GL can read from
// beginning.
buffer.flip();
// Generate a texture ID
int textureID = glGenTextures();
// Bind the ID to the context
glBindTexture(GL_TEXTURE_2D, textureID);
// Setup texture scaling filtering
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
// Send texture data to OpenGL
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, bimg.getWidth(), bimg.getHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
// Return a new Texture.
return new Texture(textureID, bimg.getWidth(), bimg.getHeight());
}
Example 2
Project: complexion-master File: TextureLoader.java View source code |
/**
* Takes a BufferedImage, loads it into the OpenGL texture cache,
* and returns the texture ID.
*/
public static int loadTexture(BufferedImage image) {
int[] pixels = new int[image.getWidth() * image.getHeight()];
image.getRGB(0, 0, image.getWidth(), image.getHeight(), pixels, 0, image.getWidth());
ByteBuffer buffer = BufferUtils.createByteBuffer(image.getWidth() * image.getHeight() * // 4 for RGBA, 3 for RGB
BYTES_PER_PIXEL);
for (int y = 0; y < image.getHeight(); y++) {
for (int x = 0; x < image.getWidth(); x++) {
int pixel = pixels[y * image.getWidth() + x];
// Red component
buffer.put((byte) ((pixel >> 16) & 0xFF));
// Green component
buffer.put((byte) ((pixel >> 8) & 0xFF));
// Blue component
buffer.put((byte) (pixel & 0xFF));
// Alpha component.
buffer.put((byte) ((pixel >> 24) & 0xFF));
// Only for RGBA
}
}
// FOR THE LOVE OF GOD DO NOT FORGET THIS
buffer.flip();
// You now have a ByteBuffer filled with the color data of each pixel.
// Now just create a texture ID and bind it. Then you can load it using
// whatever OpenGL method you want, for example:
// Generate texture ID
int textureID = glGenTextures();
// Bind texture ID
glBindTexture(GL_TEXTURE_2D, textureID);
// Setup wrap mode
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL12.GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL12.GL_CLAMP_TO_EDGE);
// Setup texture scaling filtering
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
// Send texel data to OpenGL
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, image.getWidth(), image.getHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
// Return the texture ID so we can bind it later again
return textureID;
}
Example 3
Project: FutureCraft-master File: Textures.java View source code |
public static void loadTexture(String path) {
if (textures.containsKey(path)) {
glBindTexture(GL_TEXTURE_2D, textures.get(path));
} else {
int handle = glGenTextures();
//System.out.println(handle);
glBindTexture(GL_TEXTURE_2D, handle);
textures.put(path, handle);
RawImage img = getRawImage(path);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, img.width, img.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, img.data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glGenerateMipmap(GL_TEXTURE_2D);
}
}
Example 4
Project: Awesome-Kart-master File: DebugMesh.java View source code |
private void loadTex(String s, String texName, int tex) {
//Let's load a texture here.
InputStream is = null;
ByteBuffer buf = null;
try {
is = new FileInputStream("assets/graphics/" + s + "/" + texName + ".png");
PNGDecoder pd = new PNGDecoder(is);
buf = ByteBuffer.allocateDirect(4 * pd.getWidth() * pd.getHeight());
pd.decode(buf, pd.getWidth() * 4, Format.RGBA);
buf.flip();
} catch (Exception e) {
if (!s.equals("lightSphere")) {
System.out.println("error " + e);
}
return;
}
glBindTexture(GL_TEXTURE_2D, tex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1024, 1024, 0, GL_RGBA, GL_UNSIGNED_BYTE, buf);
glBindTexture(GL_TEXTURE_2D, 0);
}
Example 5
Project: LWJGFont-master File: FontTextureLoader.java View source code |
private static FontTexture makeTexture(Class clazz, String imagePath) throws IOException { BufferedImage srcImage; int srcImageType; srcImage = ImageIO.read(clazz.getResourceAsStream(imagePath)); srcImageType = srcImage.getType(); // target int target = GL_TEXTURE_2D; // dst pixel format int dstPixelFormat = GL_RGBA; // data type int format = GL_UNSIGNED_BYTE; // テクスチャー ID を生成する int textureID = GL11.glGenTextures(); FontTexture texture = new FontTexture(target, textureID); // glTexImage2D() の対象となるテクスチャー ID をバインドする glBindTexture(target, textureID); // All RGB bytes are aligned to each other and each component is 1 byte // GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 1); int width = srcImage.getWidth(); int height = srcImage.getHeight(); texture.setWidth(width); texture.setHeight(height); texture.setTextureWidth(width); texture.setTextureHeight(height); texture.setAlphaPremultiplied(false); ByteBuffer byteBuffer; Pixel pixel = null; // System.out.println(srcImageType); if (srcImageType == BufferedImage.TYPE_INT_ARGB) { throw new RuntimeException("Unsupported type: " + srcImage.getType()); } else if (srcImageType == BufferedImage.TYPE_3BYTE_BGR) { pixel = new Pixel3ByteBGR(); } else if (srcImageType == BufferedImage.TYPE_4BYTE_ABGR) { // Photoshop の 8bit/チャネル として処理する // これは ABGR の各色について、それぞれが 8bit(1Byte) の画像フォーマットとなる。 pixel = new Pixel4ByteABGR(); } else if (srcImageType == BufferedImage.TYPE_CUSTOM) { // Photoshop の 16bit/チャネル として処理する // これは ABGR の各色について、それぞれが 16bit(2Byte) の画像フォーマットとなる。 // pixel = new Pixel8ByteABGR(); // この辺の設定は、ひとまず // MikMikuStudio/engine/src/core/com/jme3/texture/Image.java // MikMikuStudio/engine/src/jogl2/com/jme3/renderer/jogl/TextureUtil.java // を参考にしてみた // pixel = new Pixel4ByteABGR(); /* dstPixelFormat = GL_RGBA2; dstPixelFormat = GL_RGBA8; */ dstPixelFormat = GL_RGBA16; /* format = GL_UNSIGNED_SHORT; format = GL_SHORT; format = GL_UNSIGNED_SHORT_4_4_4_4; */ // Miku.png (8bit/channel)がこれで動いたので、ひとまず Pixel4ByteABGR で動かす pixel = new Pixel4ByteABGR(); } else { throw new RuntimeException("Unsupported type: " + srcImage.getType()); } byteBuffer = pixel.toBuffer(srcImage); byteBuffer.order(ByteOrder.nativeOrder()); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { int b[] = srcImage.getRaster().getPixel(x, y, pixel.getBuffer()); pixel.writeBuffer(byteBuffer); } } byteBuffer.flip(); // 画像の拡大・縮小時の補間方法を設定する glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); // バイト配列と色情報のフォーマットからテクスチャーを生成する glTexImage2D(target, 0, // テクスチャ内のカラー要素数 dstPixelFormat, width, height, // テクスチャの境界幅。境界が存在しない場合は 0、存在する場合は 1 0, // ピクセル内の色の順序。 参考 http://wisdom.sakura.ne.jp/system/opengl/gl22.html GL_RGBA, // 各チャネル(色)のデータ型。 参考 http://wisdom.sakura.ne.jp/system/opengl/gl22.html format, byteBuffer); // ミップマップの自動生成 // GL30.glGenerateMipmap(GL_TEXTURE_2D); byteBuffer.clear(); return texture; }
Example 6
Project: Mace-Swinger-master File: TextureBinder.java View source code |
public static void bindTexture(String URL, int texture) {
{
InputStream in = null;
try {
in = Resources.get(URL);
PNGDecoder decoder = new PNGDecoder(in);
ByteBuffer buffer = BufferUtils.createByteBuffer(4 * decoder.getWidth() * decoder.getHeight());
decoder.decode(buffer, decoder.getWidth() * 4, Format.RGBA);
buffer.flip();
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, decoder.getWidth(), decoder.getHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
glBindTexture(GL_TEXTURE_2D, 0);
} catch (FileNotFoundException ex) {
System.err.println("Failed to find the texture files. " + URL);
ex.printStackTrace();
Display.destroy();
System.exit(1);
} catch (IOException ex) {
System.err.println("Failed to load the texture files. " + URL);
ex.printStackTrace();
Display.destroy();
System.exit(1);
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Example 7
Project: myrobotlab-master File: Texture.java View source code |
public void loadImageData(BufferedImage image, int loadTarget) {
// Flip the image vertically
AffineTransform tx = AffineTransform.getScaleInstance(1, -1);
tx.translate(0, -image.getHeight(null));
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
image = op.filter(image, null);
GL11.glTexImage2D(loadTarget, 0, GL11.GL_RGBA8, image.getWidth(), image.getHeight(), 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, convertImageData(image));
}
Example 8
Project: Dwarf2D-master File: TextureLoader.java View source code |
/**
* Load a texture into OpenGL from a image reference on disk.
*
* @param path The location of the resource to load
* @param target The GL target to load the texture against
* @param dstPixelFormat The pixel format of the screen
* @param minFilter The minimising filter
* @param magFilter The magnification filter
* @return The loaded texture
* @throws DwarfException Indicates a failure to access the resource
*/
public static Texture getTexture(String path, int target, int dstPixelFormat, int minFilter, int magFilter) throws DwarfException {
try {
int srcPixelFormat;
// create the texture ID for this texture
int textureID = createTextureID();
Texture texture = new Texture(target, textureID);
// bind this texture
glBindTexture(target, textureID);
BufferedImage bufferedImage = loadImage(path);
texture.setWidth(bufferedImage.getWidth());
texture.setHeight(bufferedImage.getHeight());
if (bufferedImage.getColorModel().hasAlpha()) {
srcPixelFormat = GL_RGBA;
} else {
srcPixelFormat = GL_RGB;
}
// convert that image into a byte buffer of texture data
ByteBuffer textureBuffer = convertImageData(bufferedImage, texture);
if (target == GL_TEXTURE_2D) {
glTexParameteri(target, GL_TEXTURE_MIN_FILTER, minFilter);
glTexParameteri(target, GL_TEXTURE_MAG_FILTER, magFilter);
}
// produce a texture from the byte buffer
glTexImage2D(target, 0, dstPixelFormat, get2Fold(bufferedImage.getWidth()), get2Fold(bufferedImage.getHeight()), 0, srcPixelFormat, GL_UNSIGNED_BYTE, textureBuffer);
return texture;
} catch (Exception ex) {
throw new DwarfException(ex);
}
}
Example 9
Project: lwjgl-basics-master File: Texture.java View source code |
/** Uploads image data with the dimensions of this Texture.
*
* @param dataFormat the format, e.g. GL_RGBA
* @param data the byte data */
public void upload(int dataFormat, ByteBuffer data) {
bind();
setUnpackAlignment();
glTexImage2D(getTarget(), 0, GL_RGBA, width, height, 0, dataFormat, GL_UNSIGNED_BYTE, data);
}