суббота, 17 августа 2013 г.

LWJGL. Hello World по-lwjglковски.

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




LWJGL(Lightweight Java Game Library(Легкий Java игры Библиотека(это так переводчик перевел :B))) - открытая, мощная графическая библиотека для легкого создания игр на языке Java.
Библиотека оснащена классными инструментами для всего, что тебе понадобится для графического приложения, а это:
OpenGL, OpenAL, OpenCL и платформонезависимый доступ к различным манипуляторам, таким как геймпады, рули и джойстики.
Хватит теории! Давайте действовать.
Что нам понадобится для начала?
Обычный подход - это создание простого окна, в котором должно влезть все, что только вам не придет в голову.
Но сначала нужно указать размер окна и заголовок.
Для этого используется методы:
Display.setDisplayMode();
Display.setTitle();
А для создания окна, после всего вышеперечисленного - Display.create();
Далее, для графического приложения нужен главный цикл для обновления содержимого данных.
Например:
while(true)
{
    // обновление содержимого.
}
Но как выйти из программы, если цикл бесконечный?(Это я вас спрашиваю! Ответьте на этот вопрос обязательно, прежде чем читать дальше.).

Выйти из приложения можно только принудительным выключением.

И так, начнем.
import java.util.logging.Level;
import java.util.logging.Logger;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.glu.GLU;

public final class SimpleProgram
{
    private SimpleProgram()
    {
    }

    // инициализация вашего приложения.
    private void initialize()
    {
        this.createDisplay(800, 600, "SimpleProgram");
        this.running();
    }

    // создание окна.
    private void createDisplay(int width, int height, String title)
    {
        try
        {
            Display.setDisplayMode(new DisplayMode(width, height));
            Display.setTitle(title);
            Display.create();
        }
        catch (LWJGLException ex)
        {
            Logger.getLogger(SimpleProgram.class.getName()).log(Level.SEVERE, null, ex);
            this.clearResources(true);
        }
    }

    // гравный цикл.
    private void running()
    {
        while (!Display.isCloseRequested())
        {
            this.displayUpdate();
        }
        this.clearResources(false);
    }

    // обновление окна.
    private void displayUpdate()
    {
        Display.update();
        Display.sync(60); // макс FPS.
    }

    // очистка ресурсов
    private void clearResources(boolean hasCrash)
    {
        System.out.println(GLU.gluErrorString(GL11.glGetError()));
        Display.destroy();
        System.exit(hasCrash ? 1 : 0);
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        new SimpleProgram().initialize();
    }
}

Комментариев нет:

Отправить комментарий