java - 在 BufferStrategy 上绘制后尝试显示帧时出错
问题描述
我正在尝试用java制作一个简单的游戏引擎,我目前正在渲染和显示东西,我制作了一个显示函数来显示相机在JFrame中渲染的帧
if (cam != null)
frame = cam.render();
setVisible(true);
ImageCapabilities imgBackBufCap = new ImageCapabilities(true);
ImageCapabilities imgFrontBufCap = new ImageCapabilities(true);
BufferCapabilities bufCap =
new BufferCapabilities(imgFrontBufCap, imgBackBufCap, BufferCapabilities.FlipContents.COPIED);
try {
createBufferStrategy(2, bufCap);
} catch (AWTException ex) {
createBufferStrategy(2);
}
BufferStrategy bs = getBufferStrategy();
Graphics g = bs.getDrawGraphics();
if (frame != null)
g.drawImage(frame, 0, 0, null);
g.dispose();
bs.show();
但是有一次它画了一个框架,我得到了这个例外,我在互联网上找不到任何有用的东西,所以我在这里问了一个问题
Exception in thread "Display" java.lang.NullPointerException: Cannot invoke "java.awt.image.VolatileImage.getGraphics()" because "this.backBuffers[i]" is null
at java.desktop/java.awt.Component$BltBufferStrategy.showSubRegion(Component.java:4508)
at java.desktop/java.awt.Component$BltBufferStrategy.show(Component.java:4469)
at com.physicsEngine.rendering.Displayer.display(Displayer.java:41)
at com.physicsEngine.Game.display(Game.java:74)
at com.physicsEngine.Game.run(Game.java:65)
at com.physicsEngine.Game.run(Game.java:69)
at com.physicsEngine.Game.run(Game.java:69)
at com.physicsEngine.Game.run(Game.java:69)
at com.physicsEngine.Game.run(Game.java:69)
at com.physicsEngine.Game.run(Game.java:69)
at com.physicsEngine.Game.run(Game.java:69)
解决方案
推荐阅读
- php - 使用区分大小写的函数“LOWER”绑定 mysql 语句 - 语法问题
- jquery - jQuery 将自定义参数传递给通用 .click() 处理程序
- ruby-on-rails - 两个 gem 依赖项中的超类冲突
- c# - 检测是否有任何带有标签的对象在触发器内
- sails.js - Sailsjs - Cloud SDK - 蓝图 API 自动生成的路线?
- javascript - 角反应形式内的切换按钮
- mysql - Mysql——查询性能
- flowtype - 使用流正确键入 fromJS 函数的返回值
- sql - SQL A不是左连接B,只是A吗?
- python - What does the rcond parameter of numpy.linalg.pinv do?