问题标签 [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 投票
0 回答
32 浏览

canvas - 我的像素不会在我放置它们的地方绘制

我正在尝试使用 BufferStrategy 将单个像素绘制到屏幕上,但是当我运行程序时,所有像素都显示得很奇怪,它应该在左上角形成 1 个正方形,但它会产生多个在它们之间有黑线的正方形反而。

显示类

渲染类

屏幕类

如果你知道发生了什么,请告诉我,谢谢。

0 投票
0 回答
16 浏览

java - 处理到缓冲区,但 .show 不会显示图形

所以我刚刚了解了 BS 并从我被告知 dispose 基本上将我迄今为止编写的图形对象处理到 BS 上,然后使用 bs.show 它应该显示蓝色在我的背景下,但事实并非如此。

此致

我的代码是;

0 投票
2 回答
332 浏览

java - 为什么我的 BufferStrategy 会抛出 NullpointerException,我该如何解决?

我一直在尝试制作 3d 游戏,但由于某种原因,我的代码抛出了 NullPointerException。我得到的错误是:

该程序应该只显示随机颜色的像素作为测试,以便稍后制作 3d 图形。它使用了另外两个类,即使这两个类没有抛出错误,它们仍然可能是问题,所以我也会发布它们。下面的类是引发错误的类

我的渲染类

我的屏幕课

0 投票
1 回答
82 浏览

java - Java缓冲策略Multi Driver展示

我正在使用缓冲区策略在 java 中创建一个应用程序。唯一的问题是,当我在集成显卡上使用最大化的缓冲区策略时,它会因以下错误而崩溃:

Exception in thread "Thread-2" java.lang.IllegalStateException: Buffers have not been created

我相信它崩溃的原因是我在多显示器上使用 AMD 显卡和集成显卡,或者换句话说,两台显示器正在使用 AMD 显卡的显卡,而一台显示器正在使用集成显卡。

结果,我无法在 igpu 运行的监视器上最大化我的应用程序,但可以在由显卡操作的监视器上最大化我的窗口。

你有解释为什么Java给我废话吗?另外,有没有解决方案,所以我也可以在我的 igpu 运行监视器上最大化我的窗口?

这是创建和使用缓冲区的方式:

旁注,每当使用 Graphics 对象时,我都会使用g.drawImage(BufferedImage, x, y, null);

我相信您不需要阅读实现可运行的整个类,但以防万一:

0 投票
1 回答
64 浏览

java - BufferStrategy 清理框架背景

我试图在 Java 中使用graphics2DJFrame. 我在 JFrame 输入方法中添加了背景this.setBackground(new Color(54, 71, 99))颜色initWindow()。事实证明,这backBuffer是清除该背景而不是重新绘制导致此问题的行在render()方法中,最后一行backBuffer.show()

如何使它清除主要背景?

0 投票
1 回答
28 浏览

java - 屏幕对象有时不渲染

我是一名经验丰富的程序员,用 Java 创建了多个游戏引擎模板和小型 2d 游戏。我目前正在扩展到 3d 游戏引擎,并且正在重写以前的引擎以使其更具适应性和面向对象。

我的问题是,并且一直是周期性的,对象只是有时被渲染。这导致我必须不断地重新运行程序才能显示任何图像。

我没有找到这个问题的任何直接答案,而且似乎没有其他人有同样的问题(即使在观察具有完全相同代码设置的源时)。问题显然出在 render() 方法中,有时在从 main 方法调用的线程中无法正确创建或使用 Graphics 和 BufferStrategy 对象。

这是“主要”类的一些代码:

以下是 Screen 类的一些代码:

最后是 PolygonObject 类:

我不知道为什么在线程中调用 render() 会在将图像绘制到屏幕时产生不一致的结果。我见过许多游戏模板和教程的源代码,它们的代码完全相同,没有任何渲染问题。唯一一致的渲染方法是当我在线程之外使用 Canvas 类的 paintComponent() 方法绘制图像时,这会限制我的程序功能并且是游戏引擎的糟糕设计。

我想对此进行解释以及任何可能的解决方案。我没有准确的方法来构建游戏引擎而不使用线程来控制基于时间的功能。

0 投票
1 回答
27 浏览

java - 由于 BufferStrategy 未生成 KeyEvent

所以我正在制作一个游戏,我的主游戏应用程序运行良好。问题是,当我尝试通过菜单(例如使用按钮 ActionEvent)启动我的游戏时,我的游戏似乎无法检测到给它的 KeyEvents。因此,我决定制作问题所在代码的基本版本:

单击此处的按钮后,我得到了一个空白屏幕,正如预期的那样,但它没有检测到 KeyTyped 事件,并且在检查后,似乎Response.frame没有焦点。

但是,如果我更改 to 的内容,则会main()检测 new Response(); Response.mainLoop();到 KeyEvent。

调用这些setFocusable()方法是为了希望Button将焦点传递给Response框架中的组件。(在尝试找到解决方案几个小时后,我得出结论,不能专注于JFrames使用 a (尽管我没有看到它明确地写在任何地方,所以请随时纠正我)。BufferStrategy

知道发生了什么吗?

提前致谢。

0 投票
0 回答
140 浏览

java - 如何从使用 Canvas 转换为使用 JPanel?

我想使用 JPanel 来显示游戏内容,因为我现在能够使用画布。这就是我所拥有的。

我确实尝试过扩展 JPanel 类,但是我遇到了很多错误。其中之一是缓冲策略。我知道 JPanel 有自己的缓冲区,但我不确定如何实现该理论。

0 投票
0 回答
47 浏览

java - 尝试用 Java 制作动画,但不知道如何去做

我正在努力尝试将游戏作为与我的几个朋友一起制作的副项目。但我有点卡在java中的动画。

所以这是我用来将我的角色渲染到屏幕上的渲染方法。

这就是我检查按钮是否被按住的地方。我试图在按钮检查中运行一个线程,以每 200 毫秒将图像更新为不同的图像。然后将其重置为该行中的第一个图像。但那行不通。还有什么我应该做的吗?还是有另一种处理动画的方法?还是我应该尝试制作动画课程?

编辑

我遇到的问题并没有真正解决让图像在屏幕上移动的问题。但是将图像来回切换作为键被按住。

0 投票
0 回答
70 浏览

java - Java 抽象类 - 这里发生了什么?

我已经从 Oracle 搜索/阅读文档大约 2 个小时了,我很困惑。我以为我了解抽象类是什么,以及它是如何使用的(至少在基本层面上)。我对这一切还很陌生,所以请多多包涵。

据我了解,抽象类不能被实例化,而是需要一个子类来实现它的任何部分。我正在查看并试图剖析和理解的类是 BufferStrategy 和 Canvas,以及它们如何协同工作。我没有在项目中使用这些类,或多或少只是想了解它们是如何工作的。

所以,假设我有我的 Canvas 并正在为它创建一个 BufferStrategy :

文档说“.getBufferStrategy()”返回当前在 Canvas 中使用的 BufferStrategy。它显然没有返回 BufferStrategy 的实例,那么它究竟返回了什么,它是如何存储在“bs”中的?另外,当“canvas”是:“Canvas 的一个实例”时,我什至会将“bs”称为什么?

我注意到 BufferStrategy 的唯一子类“Component.BltBufferStrategy & Component.FlipBufferStrategy”,据我所知,它们嵌套在 Component 中,因此与 Canvas 共享。但我看不到它在任何地方发挥作用。

我希望这一切都有意义。如果这是我现在应该知道的一个简单的基本问题,我深表歉意,但这是去年真正让我难过的第一件事;可能是因为我没有像我想象的那样理解某些概念。感谢您的阅读。