0
Java OpenGL(LWJGL)でオブジェクトにテクスチャをロードしたいと思います。あなたはこれを行う方法を知っていますか?OpenGLでオブジェクトにテクスチャを読み込む方法
Java OpenGL(LWJGL)でオブジェクトにテクスチャをロードしたいと思います。あなたはこれを行う方法を知っていますか?OpenGLでオブジェクトにテクスチャを読み込む方法
私は、PNGDecoder (download link is here)クラスの助けを借りて.pngテクスチャを使用しました。
私はそれを行う方法は、そのような質感の整数フィールドをインスタンス化されます。
private int tex;
は、その後、私は私がthis webpage
private int setupTextures(String filename) {
IntBuffer tmp = BufferUtils.createIntBuffer(1);
GL11.glGenTextures(tmp);
tmp.rewind();
try {
InputStream in = new FileInputStream(filename);
PNGDecoder decoder = new PNGDecoder(in);
System.out.println("width=" + decoder.getWidth());
System.out.println("height=" + decoder.getHeight());
ByteBuffer buf = ByteBuffer.allocateDirect(4 * decoder.getWidth() * decoder.getHeight());
decoder.decode(buf, decoder.getWidth() * 4, PNGDecoder.Format.RGBA);
buf.flip();
GL11.glBindTexture(GL11.GL_TEXTURE_2D, tmp.get(0));
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER,
GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER,
GL11.GL_NEAREST);
GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 4);
GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, decoder.getWidth(), decoder.getHeight(), 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, buf);
int unsigned = (buf.get(0) & 0xff);
System.out.println(unsigned);
System.out.println(buf.get(1));
System.out.println(buf.get(2));
System.out.println(buf.get(3));
} catch (java.io.FileNotFoundException ex) {
System.out.println("Error " + filename + " not found");
} catch (java.io.IOException e) {
System.out.println("Error decoding " + filename);
}
tmp.rewind();
return tmp.get(0);
}
から見つかったこの便利なメソッドを使用しての戻り値を代入(テクスチャへのパスが必要です):
tex = setupTextures(Main.class.getResource("images/Dirt.png").getPath());
テクスチャをバインドするだけです。
GL11.glBindTexture(GL11.GL_TEXTURE_2D, tex);
あなたはすべて設定されています。あなたのスタイルをインポートすることによって、java.io. [class]を忘れることができます。まったく何もインポートしないで、あなたのコード全体にそのタイプの構文を使用することができます。