gpt4 book ai didi

java - 被动渲染方式

转载 作者:行者123 更新时间:2023-11-30 03:18:58 24 4
gpt4 key购买 nike

我正在构建一个简单的游戏渲染方法。我有一个静态图像,例如 map 背景,根本没有真正改变。我只使用整个屏幕的 30% 来更改图形。而且我觉得如果没有改变,就没有必要一遍又一遍地渲染所有这些东西。

在互联网上我发现了一些关于被动渲染的东西 - 你绘制你需要的东西并等待......直到有更新......之后你更新它并再次等待。看起来对于这种情况来说是一个很好的方法。但现在 ...我有一个这样的渲染方法:

public class X extends Canvas{
//some method
this.createBufferStrategy(3);
//....
public void render(){
BufferStrategy buffer = this.getBufferStrategy();
Graphics g = buffer.getDrawGraphics();
//Draws black background...
g.setColor(Color.BLACK);
g.fillRect(....
for(... //cycles every object and calls their render methods...
}

这无法维持绘制和等待方法...因为背景每 1/30 秒重绘一次,所以如果您没有任何东西可绘制,您将得到黑色 Canvas ,上面没有任何内容...所以您有每次更新都要重新绘制所有内容...如果我不绘制背景,缓冲区就会开始像 hell 一样闪烁...所以我必须有一些东西来掩盖这些东西。

我在互联网上搜索,没有找到任何关于这种渲染类型的其他解决方案。..有很多用于主动渲染的东西,但没有任何关于绘制和等待方法的东西..

我认为使用 BufferStrategy 不可能做到这一点。还有其他东西可以为此服务吗? Graphics g 还有其他来源吗?在互联网上有一些关于从 Canvas 调用它 directyl 的内容,但我没有让它运行。还是我从错误的角度思考这个问题?

最佳答案

您将被动渲染与部分更新混淆了。在“被动渲染”中,您可以重绘所有内容,但不能以 30fps 的速度进行。只有当有东西移动时你才会这样做。在“部分渲染”中,您只在 Canvas 上发生变化的部分进行绘制。

两者可以放在一起,这样您就可以只绘制发生变化的内容,并且仅在发生变化时绘制。这是理想的情况。

但是,如果某些东西始终在移动,则被动渲染不起作用;如果整个背景不断更新,则部分更新不起作用。

关于java - 被动渲染方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31816641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com