2015-07-11 1 views
0

Я вхожу в разработку игры в java, и я смотрю видеоролики об этом, и до сих пор я видел два способа рендеринга:Лучший способ визуализации java?

1-Создать буферизованное изображение, изменить отдельные пиксели каждого кадра, а затем нарисуйте изображение (например, чтобы нарисовать прямоугольник, изменив пиксели изображения на цвет)

2-Вместо того, чтобы менять пиксели, просто нарисуйте материал по другим материалам с помощью графических методов и очистите полотно каждого кадра (например, для рисования прямоугольника просто используйте graphics.drawRect (...)

Итак, что является лучшим способом и каковы плюсы и минусы каждого метода? Потому что второй метод кажется способом Полегче.

+1

методы, которые вы используете в 2 способа сделать первый. –

+0

Кроме того, я бы рекомендовал использовать существующий рендерер. [JavaFX способен отображать 3D-сцены] (http://docs.oracle.com/javase/8/javafx/graphics-tutorial/javafx-3d-graphics.htm). Если вы действительно вписываете свой собственный рендерер, я бы рекомендовал начать писать код C/C++ и посмотреть, как, например, openGL делает вещи. – Turing85

+0

Java не подходит для графики imo, но, вероятно, вы уже знаете об этом. Возможно, вы также можете посмотреть книгу о программировании игр на Java http://www.amazon.co.uk/Killer-Game-Programming-Java-Book/dp/0596007302/ –

ответ

0

Реализация программного обеспечения по-прежнему является вариантом.

Если вы используете Frame Implementation Runnable, то быстрее объявить paint() и repaint() как {} и выполнить чертеж в цикле внутри run().

, например ...

private static MemoryImageSource imgSrc; 
private static DirectColorModel imgCm = new DirectColorModel(32,0xff0000,0xff00,0xff); 
private static Image    img; 
private static int    xsize = 256; 
private static int    ysize = 256; 
private static int    pixels[]; 
private static int    appLeft = 0; 
private static int    appTop = 0; 

private static void init() { // initialize 
    imgSrc = new MemoryImageSource(xsize, ysize, pixels, 0, xsize); 
    img = createImage(imgSrc); 
    imgSrc.setAnimated(true); 
    imgSrc.newPixels(pixels, imgCm, 0, xsize); 
    appLeft = getInsets().left; 
    appTop = getInsets().top; 
} 

public void run() { 
    Graphics g; 
    for(;;) { 
    // .... render something here 
    // then... 
    g = getGraphics(); 
    imgSrc.newPixels();    // NOTE: renders array to image 
    g.drawImage(scr, appLeft, appTop, this); 
    g.dispose(); 
    } 
}