问题标签 [bufferstrategy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
88 浏览

java - Java 游戏图像缓冲留下尾巴

我有以下类(片段),在我的render()方法中,我正在使用BufferStrategy. 我遇到的问题是当我移动图像时,它会留下一条尾巴。

带尾巴的例子

我需要对我的代码做什么才能使它不显示尾巴?这是代码:

编辑

我想到了:

0 投票
1 回答
529 浏览

java - 同时使用java bufferstrategy和swing元素

我现在编写了一个简单的RTS游戏,这是我在游戏设计方面的第一次体验。我的问题是,当我使用 createBufferStrategy(2) 时,在 bufferStrategy.show(); 之后未显示所有摆动元素(按钮等);方法被调用。我的游戏充满了按钮、表格和其他垃圾,我真的不想自己编写所有这些代码。我也很喜欢 Java 的布局,并希望在此基础上制作所有的 GUI。所以,这是一个小代码示例,不是来自我的游戏,但它很好地展示了我的问题。谢谢。顺便说一句,我了解我的问题的根源。我知道挥杆抽签机制是基于事件的,而使用缓冲策略不是基于事件的。但我不知道如何解决这个问题。谢谢你。最后 - 我不想使用默认的基于摇摆事件的方法,因为它对游戏来说很慢,据我所知,bufferstratgey 只是游戏的方法。谢谢。

0 投票
0 回答
71 浏览

java - 使用自定义缓冲区交换 BufferStrategy FrameBuffer

我编写了一个 Java 颜色缓冲区类,其中包含一个 2D 浮点数组,即缓冲区。现在我想用我的缓冲区交换来自我的 JFrame/Canvas 的 BufferStrategy 的缓冲区。我通过使用 drawLine 将缓冲区的每个像素绘制到屏幕上来做到这一点:

现在有没有更好的方法来做到这一点?使用它的性能真的很低。

0 投票
1 回答
239 浏览

java - 使用 BufferStrategy 在 Java 中滑动图像

我正在尝试使用 BufferStrategy 和 Graphics2D 渲染图像。代码运行良好,但图像闪烁。在我用 Graphics2D 测试它之前,我只用 Graphics 尝试过,而且 Frame 疯狂地闪烁。这是代码:

(对不起,我的英语不好)

0 投票
1 回答
1101 浏览

java - BufferStrategy 绘制和更新屏幕

我正在尝试并排绘制单个矩形(未填充)以制作地板,然后以恒定速度向左移动整个地板。我的问题是,当他们向左移动时,屏幕不会刷新或删除前一个屏幕,因此几秒钟后,矩形集是纯色。

这是我的代码。我想知道如何加载屏幕,然后更新值,删除旧屏幕并显示新屏幕?

框架类:

游戏类:

0 投票
1 回答
1310 浏览

java - AWT Canvas BufferStrategy 和调整大小闪烁

我正在尝试使用 Java2D 制作一个简单的游戏以获得最大的兼容性。它在 Mac OS X Yosemite 上的 Java 8 下运行良好,但是当我在 Windows 7 下尝试相同的代码时,它就没有那么流畅了。当 JFrame 被调整大小时,画布会闪烁,这真的很难看。

我的应用程序使用带有 BufferStrategy 的 AWT Canvas 并且像这样工作。当环境中有东西移动时,另一个线程调用重绘。但是对于窗口大小调整处理,我的策略如下:

也许我没有以正确的方式使用 BufferStrategy?

0 投票
2 回答
325 浏览

java - Swing 需要 createBufferStrategy(2) 才能正确绘制

我有一些网格被一一绘制成屏幕。我使用箭头键将网格作为一组移动。Swing 据说默认是双缓冲的,所以我认为这frame.createBufferStrategy(2)是一个不好的做法,但问题是当我不使用手动双缓冲时,网格未对齐并且它们之间出现了一些孔。使用手动双缓冲修复它。

我在实际程序(不是在 SSCCE 中)中也遇到了一些图形问题(例如对话框的按钮显示不正确),所以我认为这可能是由于双缓冲的不正确实现引起的。

这是程序的 SSCCE,它会在不手动双缓冲时导致网格错位:

swing 的 Oracle 教程没有解释游戏循环的用法。最好的方法是什么?我做错什么了吗?

如果在其他计算机上没有重现视觉错误,我正在上传屏幕截图: 那些黑线不应该发生。 黑线是由矩形错误造成的。当手动双缓冲设置为 true 时,它​​们不存在。

提前致谢。

编辑:我忘了提到当网格移动时会出现黑线。

我还发现,手动双缓冲会大大降低性能。

编辑 2:我已经解决了问题并将其作为答案发布,但请随时评论我的代码。主类(gameLoop 除外)类似于我在程序中使用的实际主类。

0 投票
1 回答
236 浏览

java - BufferStrategy 并不总是显示在 JFrame 上

我有一个使用BufferStrategyJFrame对象创建的应用程序来绘制形状。该代码非常标准,您可以在其他地方找到:

现在looooooooop函数是绘图实际发生的地方:

现在问题是大约 75% 的时间应用程序启动并运行良好,另外 25% 的时间框架出现但只能看到框架的背景颜色,就像图形对象没有绘制一样屏幕上的任何东西。我已经尝试调试并弄清楚这个问题是否正在停止,但这样做真的很难。我认为这与在另一个线程中运行的逻辑循环有关(也许这解释了应用程序的不一致性质),但没有任何运气。这个问题是不是听起来很熟悉?谢谢!

编辑- 删除单独的线程后,这仍然会发生,所以不可能是因为这个。

编辑 2 - 似乎只有在启用全屏模式时才会发生这种情况(无论是否调用setVisible()):

这是一个已知问题还是我错过了什么?谢谢!

编辑 3 - 这仅在 Ubuntu 上发生 - 通过蛮力验证。在网上找不到任何关于错误的信息,所以我不知道该怎么想。

0 投票
1 回答
386 浏览

java - 将 JFrame 作为参数传递给 BufferStrategy 的 JPanel 子类

我正在创建一个应用程序,其中有一个带有主框架 (JFrame) 的类,以及一个名为 OvalPanelClass 的 JPanel 子类。我说主框架是因为用户可以选择打开另一个 JFrame(窗口)。此 OvalPanelClass 是动态的,并使用 BufferStrategy 显示其图像。它在某些情况下都被启动到一个单独的 JFrame 中,并且在某些时候也出现在主框架的右下部分,所以我觉得让这个类成为包含主框架的类的内部类没有意义.

问题是,由于此 JPanel 不是具有 JFrame 的类的一部分,因此它无法调用以获取 BufferStrategy 等。所以为了克服这个问题,我尝试将对主框架的引用传递给 OvalPanelClass 构造函数,但我没有得到结果。我的问题是我的推理有什么缺陷?

FrameClass

OvalPanelCanvas

谢谢你的时间!我对这个项目是什么含糊不清,并且已经删除了我认为不相关的细节,但如果您需要更多背景信息,请告诉我。

0 投票
1 回答
1949 浏览

java - 如何在 JFrame 中渲染一个面板

我正在创建一个应用程序,如下图粗略说明有 3 个部分:顶部菜单(JPanel)、侧边栏菜单(另一个 JPanel)和第三部分,我将其称为预览窗格(黄色部分)。预览窗格显示基于用户可以在侧边栏菜单中调整的参数(RGB 类型组件等)呈现的模式。

我的应用程序的布局

由于此预览窗格必须在图案完成之前绘制多个形状,因此我使用 BufferStrategy 在显示之前准备图像。我已经尝试了很多不同的方法来实现这一点,并阅读了很多不同的意见,是否将 Canvas 用于我的预览窗格,因此已经从使用 JPanel 到 Canvas 等来回发送,但无法得到这个与任何一个一起工作。实现我想要的最佳方式是什么?热衷于推荐好的资源/书籍。

这是我的精简代码,因此可以告诉我哪里出错了: