2013-07-30 2 views
5

Я разрабатываю свой собственный игровой движок под названием FGame, и у меня есть эта графическая ошибка, которая действительно подслушивает меня, и я не уверен, где проблема. Для графики я использую пользовательский класс Image, который имеет 2d-массив пикселей для хранения своих данных. У меня также есть экранный класс, который расширяет класс Image, а пиксельные данные экрана используются для рисования в JFrame через класс java BufferedImage.Ошибка пользовательского пиксельного рендеринга Java

Если я рисую изображение, и я перемещаю его по экрану, появляется графическая ошибка, которая искажает пиксели в вертикальной линии в определенных местах на экране.

Вот видео, показывающее ошибку, которую я пытаюсь описать: http://www.youtube.com/watch?v=MnGCuHW5neI, и вот ссылка на исходный код: https://github.com/Frechetta/FGame.

+0

+1 для хороших источников для исследования –

+0

Что вы имеете в виду искажается? – arynaq

+0

Поскольку изображение перемещается горизонтально, пиксели этого изображения, которые пересекают определенные точки по оси X, перемещаются вверх или вниз на один пиксель, а затем снова назад, как только они находятся на другой стороне этой точки. –

ответ

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); 
Смежные вопросы