我在实现游戏暂停模糊屏幕以在游戏暂停状态期间渲染时遇到问题。我需要在用户暂停屏幕时拍摄当前屏幕的图片或纹理,即游戏运行状态。也许将其存储到内存中,对其进行模糊处理,然后将其渲染到屏幕上,以实现良好的模糊效果,就像在《愤怒的小鸟》等热门游戏中那样,实现高斯模糊效果。
我尝试使用屏幕截图来实现,但是屏幕截图的过程会使游戏卡住几秒钟,这不太好。
这是我的渲染代码的一部分
private void updatePlayerForUserInput(float delta)
{
if (Gdx.input.isKeyPressed(Keys.P) || pause)
{
ScreenShotSaver.saveScreenShot();
state = State.GAME_PAUSED;
if(!DEBUG_MODE)
{
toggleGestureProcessor(false);
setBackgroundTexture(new TextureRegion(applyBlurEffect(Gdx.files.external("madboy/screenshot.png"))));
gameScreenGamePauseMenu.sendInMenu();
}
}
}
有人可以帮助实现这样的屏幕
这是我非常想要的效果的一个例子 1 : enter link description here 这是另一件事,但类似的事情 2:enter link description here
这是我根据游戏状态更新逻辑的一部分
private void render(float delta)
{
switch (state)
{
case GAME_READY:
renderReady();
break;
case GAME_RUNNING:
renderRunning(delta);
break;
case GAME_PAUSED:
renderPaused();
break;
case GAME_LEVEL_END:
renderLevelEnd();
break;
case GAME_OVER:
renderGameOver();
break;
}
}
private void update(float delta)
{
switch(state)
{
case GAME_READY:
updateReady();
break;
case GAME_RUNNING:
updateRunning(delta);
break;
case GAME_PAUSED:
updatePaused();
break;
case GAME_LEVEL_END:
updateLevelEnd();
break;
case GAME_OVER:
updateGameOver();
break;
}
}
我正在使用 Libgdx 库并使用 java 进行编程
最佳答案
不要将屏幕截图的图像保存到文件中,而是尝试使用以下内容
Pixmap构造函数中的字节数组应该包含图像字节,两个整数是offset和length
如何获取字节图像的示例:
BufferedImage bufferedImage = new Robot().createScreenCapture(new Rectangle(startX, startY, width, height));
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, format, outputStream);
outputStream.flush();
byte[] data = outputStream.toByteArray();
outputStream.close();
其中format
可以是字符串形式的任何图像格式(示例如下):
String format = "png";
String format = "jpg";
关于java - 在游戏暂停之前复制当前屏幕的图片,将其模糊并在游戏暂停期间渲染到屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29051437/