【问题标题】:Java custom pixel rendering engine bugJava自定义像素渲染引擎bug
【发布时间】:2013-07-30 06:28:54
【问题描述】:

我正在开发自己的名为 FGame 的游戏引擎,但我遇到了这个让我非常烦恼的图形错误,我不确定问题出在哪里。对于图形,我使用了一个自定义的 Image 类,它有一个二维像素数组来存储它的数据。我还有一个屏幕类,扩展了Image类,屏幕的像素数据通过BufferedImage java类用于绘制到JFrame。

如果我正在绘制图像并在屏幕上移动它,则会出现一个图形错误,它会使屏幕上某些位置的垂直线中的像素失真。

这是一个视频,显示了我试图描述的错误:http://www.youtube.com/watch?v=MnGCuHW5neI,这里是源代码的链接:https://github.com/Frechetta/FGame

【问题讨论】:

  • +1 获取良好的调查来源
  • 扭曲是什么意思?
  • 当图像水平移动时,该图像中与 x 轴上某些点相交的像素会向上或向下移动一个像素,然后在它们位于该点的另一侧时再次移动.
  • 好像是画面撕裂,如果你将layoutmanager设置为null而不是borderlayout,会出现这种情况吗?当您进行主动渲染时,您不希望布局管理器尝试重新绘制。
  • 是的,@arynaq 是对的。我刚刚在没有布局管理器的情况下尝试了您的代码,并且它没有撕裂。将布局设置代码更改为frame.setLayout(null); frame.setSize(getPreferredSize()); this.setSize(getPreferredSize());

标签: java rendering game-engine pixel


【解决方案1】:

感谢@arynaq 和@Max 帮助我解决问题。我会为遇到此问题的其他人发布我的旧代码和新代码。

旧代码:

frame = new JFrame(nameA);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(this, BorderLayout.CENTER);
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

新代码:

frame = new JFrame(nameA);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
this.setSize(getPreferredSize());
frame.add(this);
frame.pack();
frame.setSize(getPreferredSize());
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

【讨论】:

    猜你喜欢
    • 2015-04-03
    • 2013-06-08
    • 2018-02-14
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2021-10-01
    相关资源
    最近更新 更多