В настоящее время я пытаюсь создать что-то для отображения «2D-вида» для сетки, который можно использовать для различных пропорций, например, для простой 2D-игры.
После выполнения обтекания с помощью простойБазовый класс (он содержит всю информацию для моего визуального материала, включая значения пикселей для спрайтов). Я начал визуальную работу.Поскольку моя цель состоит в том, чтобы сделать это с обычным Swing / AWT в Java, я просто создал пользовательский JComponent
для этого.
В моем JComponent
я попробовал несколько подходов и решил проверить информацию о своих пикселях вBufferedImage
а с другой стороны нарисуйте пиксели прямо в графическом объекте.
Просматривая интернет, я нашел несколько способов нарисовать пиксель / точку на экране, например this .В этом случае я обернул это в метод:
private void drawSpritePixels(ArrayList<Spr.Pixel> pixels, int startX, int startY, Graphics2D g) {
for (Spr.Pixel p : pixels){
g.setColor(p.color);
g.fillRect(p.x + startX, p.y + startY, 1, 1);
}
}
Для рисования моих данных на BufferedImage
, я использую это:
public BufferedImage spriteImage(int spriteAddress) {
BufferedImage img = GraphicsEnvironment
.getLocalGraphicsEnvironment()
.getDefaultScreenDevice()
.getDefaultConfiguration()
.createCompatibleImage(32, 32, Transparency.TRANSLUCENT);
for (Pixel p : getSpriteInfo(spriteAddresses.get(spriteAddress))) {
img.setRGB(p.x, p.y, p.color.getRGB());
}
return img;
}
Как гласит заголовок,производительность была лучше при использовании подхода BufferedImage
.В моих тестах BufferedImage
требуется 40 мсек, чтобы закончить, в то время как пиксели отнимают 200 мс + на то же количество "работы".
Тогда, почему это так отличается?Должен ли я избегать любых итераций в пикселях?