libgdx网格屏幕截图原始分辨率

libgdx网格屏幕截图原始分辨率,libgdx,screenshot,mesh,scene2d,Libgdx,Screenshot,Mesh,Scene2d,我有一个网格,我使用texture.bind()在渲染循环中绑定了一个纹理 纹理的原始分辨率为1024 x 1024。我的桌面屏幕分辨率是1366 x 768 因此,我在网格三角形中进行了一些更改,以修改纹理的外观。我四处移动一些三角形以获得最终图像。现在,我想以原始分辨率保存该图像,但如果使用图像的原始pixmap进行保存,它会在修改之前将原始图像保存在1024x1024中。但我想将修改后的图像保存在1024x1024中 我还使用了屏幕截图代码: byte[] pixels = ScreenU

我有一个网格,我使用texture.bind()在渲染循环中绑定了一个纹理

纹理的原始分辨率为1024 x 1024。我的桌面屏幕分辨率是1366 x 768

因此,我在网格三角形中进行了一些更改,以修改纹理的外观。我四处移动一些三角形以获得最终图像。现在,我想以原始分辨率保存该图像,但如果使用图像的原始pixmap进行保存,它会在修改之前将原始图像保存在1024x1024中。但我想将修改后的图像保存在1024x1024中

我还使用了屏幕截图代码:

byte[] pixels = ScreenUtils.getFrameBufferPixels(0, 0, Gdx.graphics.getBackBufferWidth(), Gdx.graphics.getBackBufferHeight(), true);
Pixmap pixmap = new Pixmap(Gdx.graphics.getBackBufferWidth(), Gdx.graphics.getBackBufferHeight(), Pixmap.Format.RGBA8888);
BufferUtils.copy(pixels, 0, pixmap.getPixels(), pixels.length);
PixmapIO.writePNG(Gdx.files.local("saved/screenshot.png"), pixmap);
pixmap.dispose();
但由于显示器分辨率较低,它以1024x750分辨率保存图像(在本例中,getBackBufferHeight变为750)


现在我想捕获/保存修改后的图像(使用网格三角形修改)。我现在需要做什么才能得到修改后的1024x1024图像?我是否应该使用滚动窗格以其原始分辨率显示图像,以便在拍摄屏幕快照时获得1024x1024?

在大小正确的帧缓冲区(而不是屏幕的后缓冲区)上进行修改。但是要小心设备是否支持RGBA8888作为帧缓冲区(OpenGL ES 2.0不需要RGBA8888,所以一些GPU不支持它)

int width = 1024;
int height = 1024;
FrameBuffer frameBuffer;
try {
    frameBuffer = new FrameBuffer(Pixmap.Format.RGBA8888, width, height, false);
} catch (GdxRuntimeException e) {
    frameBuffer = new FrameBuffer(Pixmap.Format.RGB565, width, height, false);
}
frameBuffer.begin();
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
//draw your texture and do your manipulations.

byte[] pixels = ScreenUtils.getFrameBufferPixels(0, 0, width, height, true);
Pixmap pixmap = new Pixmap(width, height, Pixmap.Format.RGBA8888);
BufferUtils.copy(pixels, 0, pixmap.getPixels(), pixels.length);
PixmapIO.writePNG(Gdx.files.local("saved/screenshot.png"), pixmap);
pixmap.dispose();

frameBuffer.end();
frameBuffer.dispose();