Я хотел бы запрограммировать 2D-движок игры. Проблема у меня (я не использую opengl и т. Д., Так что я делаю с процессором), что я получаю только 7fps через graphics.drawImage(); Есть ли у вас предложения ускорить это или какие-либо альтернативы?java.awt.Graphics -> graphics.drawImage слишком медленный, что не так?
image = new BufferedImage(gc.getWidth(), gc.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
canvas.createBufferStrategy(1);
bs = canvas.getBufferStrategy();
g = bs.getDrawGraphics();
g.drawImage(image, 0, 0, canvas.getWidth(), canvas.getHeight(), null);
Мой рендерер должен просто цвет рамки (ширина 320 высота 240 пикселей) голубого цвета, и он делает, но только при максимуме 8fps. Renderer:
private int width, height;
private byte[] pixels;
public Renderer(GameContainer gc){
width = gc.getWidth();
height = gc.getHeight();
pixels = ((DataBufferByte)gc.getWindow().getImage().getRaster().getDataBuffer()).getData();
}
public void clear(){
for(int x = 0; x < width; x++){
for(int y = 0; y < height; y++){
int index = (x + y * width) * 4;
pixels[index] = (byte)255;
pixels[index+1] = (byte)255;
pixels[index+2] = (byte)255;
pixels[index+3] = 0;
}
}
}
8fps для очистки 320x240 слишком медленно. Обычно я использую VCL Bitmap ScanLine [] для SW renderig для двух и трехмерных изображений. Я получил скорость намного лучше, чем 7fps. попробуйте разные gfx api или язык. Почему вы отметили [OpenGL], когда вы его не используете? см. [Отобразить массив цветов в C] (http://stackoverflow.com/a/21699076/2521214) для некоторых идей – Spektre