3D技術研究所Wiki > OpenGL > テクスチャ > BufferedImageでOpenGLテクスチャを更新する

BufferedImageでOpenGLテクスチャを更新する方法についてまとめています。

情報

java.awt.image.BufferedImageを利用してテクスチャを更新します。
動画などの常に更新されるものをテクスチャ化する時に使います。
更新先のテクスチャのサイズと更新元のBufferedImageのサイズは等しくなるように注意して下さい。
合わせて「BufferedImageでOpenGLテクスチャを作成する」もご覧ください。

目次


BufferedImageでテクスチャを更新するソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.awt.image.BufferedImage;
import java.nio.IntBuffer;

import javax.media.opengl.GL;
import static javax.media.opengl.GL.*;

void updateTexture(int texture, BufferedImage image) {

    gl.glEnable(GL_TEXTURE_2D);
    gl.glBindTexture(GL_TEXTURE_2D, texture);

    int width = image.getWidth();
    int height = image.getHeight();
    int [] argb = image.getRGB(0, 0, width, height, null, 0, width);
    for(int i=0; i<argb.length; i++) {
        int color = argb[i];
        int a = (color>>24)&0xff;
        int r = (color>>16)&0xff;
        int g = (color>>8)&0xff;
        int b = color&0xff;
        argb[i] = (a<<24)|(b<<16)|(g<<8)|r;
    }
    IntBuffer buffer = IntBuffer.wrap(argb);
    gl.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);

}


関連ページ


スポンサードリンク

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS