<
  • Главная
Статьи

Главная Новости

Подключение LWJGL в IntelliJ IDEA


Опубликовано: 01.09.2018

видео Подключение LWJGL в IntelliJ IDEA

Подключение библиотек в Eclipse

Среда программирования: 

Lightweight Java Game Library (LWJGL) — открытая графическая библиотека, основной целью которой является предоставление простого и легковесного программного интерфейса для создателей компьютерных игр на языке Java.



Она предоставляет доступ к OpenGL, OpenAL, OpenCL. Этот доступ является прямым и высокопроизводительным, но также включает в себя безопасный и удобный для пользователя уровень.

Чтобы начать работать с LWJGL нужно скачать архив с сайта:

https://www.lwjgl.org/

В разделе Download нужно нажать Customize LWJGL и выбрать Release или Stable . Их отличие в том, что Stable это последняя версия, которая была проверена для работы с LWJGL, а Release последняя стабильная сборка, которая была повышена до официального LWJGL.


Геймдев на Java 001 - Создаем проект и подключаем LWJGL

Затем в разделе Contents убираем галочки везде кроме GLFW и OpenGL .

Жмем DOWNLOAD ZIP и скачиваем архив.

После того как все скачалось, извлекаем из него в папку все файлы с разрешением jar.

Далее запускаем IntelliJ IDEA и создаем проект или открываем готовый.

Заходим в меню File , выбираем Project Structure , в открывшемся окне переходим в Modules и нажимаем на зеленый плюс справа.

Далее выбираем JARs os directories и затем добавляем все файлы с разрешением jar из папки, в которую их извлекли. Отмечаем все что добавили галочками и нажимаем Apply и затем OK .

Все,LWJGL подключен. Если нажать на External Libraries , то можно увидеть все что мы подключили.

Напишем пример, который использует GLFW для создания окна и очистки цвета фона до желтого, используя OpenGL.

Код:

HelloWorld:

import org.lwjgl.Version ; import org.lwjgl.glfw.GLFWErrorCallback ; import org.lwjgl.glfw.GLFWVidMode ; import org.lwjgl.opengl.GL ; import org.lwjgl.system.MemoryStack ; import java.nio.IntBuffer ; import static org. lwjgl .glfw .Callbacks .glfwFreeCallbacks ; import static org. lwjgl .glfw .GLFW .*; import static org. lwjgl .glfw .GLFW .glfwPollEvents ; import static org. lwjgl .opengl .GL11 .*; import static org. lwjgl .system .MemoryStack .stackPush ; import static org. lwjgl .system .MemoryUtil .NULL ; public class HelloWorld { // The window handle private long window ; public void run ( ) { System . out .println ( "Hello LWJGL " + Version. getVersion ( ) + "!" ) ; init ( ) ; loop ( ) ; // Free the window callbacks and destroy the window glfwFreeCallbacks (window ) ; glfwDestroyWindow (window ) ; // Terminate GLFW and free the error callback glfwTerminate ( ) ; glfwSetErrorCallback ( null ) .free ( ) ; } private void init ( ) { // Setup an error callback. The default implementation // will print the error message in System.err. GLFWErrorCallback. createPrint ( System . err ) .set ( ) ; // Initialize GLFW. Most GLFW functions will not work before doing this. if ( ! glfwInit ( ) ) throw new IllegalStateException ( "Unable to initialize GLFW" ) ; // Configure GLFW glfwDefaultWindowHints ( ) ; // optional, the current window hints are already the default glfwWindowHint (GLFW_VISIBLE, GLFW_FALSE ) ; // the window will stay hidden after creation glfwWindowHint (GLFW_RESIZABLE, GLFW_TRUE ) ; // the window will be resizable // Create the window window = glfwCreateWindow ( 300 , 300 , "Hello World!" , NULL , NULL ) ; if ( window == NULL ) throw new RuntimeException ( "Failed to create the GLFW window" ) ; // Setup a key callback. It will be called every time a key is pressed, repeated or released. glfwSetKeyCallback (window, ( window, key, scancode, action, mods ) -> { if ( key == GLFW_KEY_ESCAPE && action == GLFW_RELEASE ) glfwSetWindowShouldClose (window, true ) ; // We will detect this in the rendering loop } ) ; // Get the thread stack and push a new frame try ( MemoryStack stack = stackPush ( ) ) { IntBuffer pWidth = stack. mallocInt ( 1 ) ; // int* IntBuffer pHeight = stack. mallocInt ( 1 ) ; // int* // Get the window size passed to glfwCreateWindow glfwGetWindowSize (window, pWidth, pHeight ) ; // Get the resolution of the primary monitor GLFWVidMode vidmode = glfwGetVideoMode (glfwGetPrimaryMonitor ( ) ) ; // Center the window glfwSetWindowPos ( window, ( vidmode. width ( ) - pWidth. get ( 0 ) ) / 2 , ( vidmode. height ( ) - pHeight. get ( 0 ) ) / 2 ) ; } // the stack frame is popped automatically // Make the OpenGL context current glfwMakeContextCurrent (window ) ; // Enable v-sync glfwSwapInterval ( 1 ) ; // Make the window visible glfwShowWindow (window ) ; } private void loop ( ) { // This line is critical for LWJGL's interoperation with GLFW's // OpenGL context, or any context that is managed externally. // LWJGL detects the context that is current in the current thread, // creates the GLCapabilities instance and makes the OpenGL // bindings available for use. GL. createCapabilities ( ) ; // Set the clear color glClearColor (1.0f, 1.0f, 0.0f, 0.0f ) ; // Run the rendering loop until the user has attempted to close // the window or has pressed the ESCAPE key. while ( ! glfwWindowShouldClose (window ) ) { glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ) ; // clear the framebuffer glfwSwapBuffers (window ) ; // swap the color buffers // Poll for window events. The key callback above will only be // invoked during this call. glfwPollEvents ( ) ; } } public static void main ( String [ ] args ) { new HelloWorld ( ). run ( ) ; } } Прикрепленный файл Размер
Lwjglpj.zip 9.57 кб


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью

rss