我是新手libgdx
,并且正在尝试将来自工作游戏引擎的约 100 个对象的(缩略图大小)图像渲染到Image
可以在应用程序中显示的Java 中Swing
。
我可以在LwjglCanvas 中很好地在屏幕上渲染它们,然后我可以使用ScreenUtils.getFrameBufferPixels()
(尝试将 a 传递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