私は を初めて使用し、アプリケーションで表示できるlibgdx
Java に、動作中のゲーム エンジンから ~100 個のオブジェクトの (サムネイル サイズの) 画像をレンダリングしようとしています。Image
Swing
LwjglCanvasファイン内で画面上にレンダリングできます。そこから、 を使用してピクセルを取得し(メソッドにをScreenUtils.getFrameBufferPixels()
渡そうとすると、BufferedImage
には何もレンダリングされません)、それらを に配置できます。ただし、これには既存の表示された ;が必要です。画面にレンダリングせずにバックグラウンド スレッドのサムネイル表示を行う方法がわかりません。getGraphics()
LwjglCanvas.paint(graphics)
graphics
BufferedImage
LwjglCanvas
現在のコード スニペットを添付します (キャンバス内に表示された画像が必要です。Runnable
このキャンバスに投稿された内で実行されますcanvas.postRunnable()
)。
// canvas is an LwjglAWTCanvas
int w = canvas.getGraphics().getWidth();
int h = canvas.getGraphics().getHeight();
BufferedImage bi = new BufferedImage(w, h,
BufferedImage.TYPE_INT_ARGB);
WritableRaster wr = bi.getRaster();
byte[] bytes = ScreenUtils.getFrameBufferPixels(0, 0, w, h, false);
int[] pixel = new int[4];
for (int y = h-1, b = 0; y >=0 h; y--) {
for (int x = 0; x < w; x++) {
pixel[0] = bytes[b++];
pixel[1] = bytes[b++];
pixel[2] = bytes[b++];
pixel[3] = bytes[b++];
wr.setPixel(x, y, pixel);
}
}
image = bi; // image is the rendered output image