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

Подключение 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 кб


Новости
    Без плагина
    На сайте WordPress имеется файл, именуемый как .htaccess. Многие пользователи не предают ему особого внимания и не используют все его возможности. На самом деле файл .htaccess – это дополнительные конфигурации

    Плагин подписки wordpress
    Очень трудно найти один плагин подписки wordpress , который объединил бы в себе все виды подписок, которые так необходимы сайту. Именно поэтому я решил сделать подборку лучших плагинов, которые смогут

    Слайд-шоу с помощью плагина для WordPress UnPointZero Slider
    Плагин для cms WordPress UnPointZero Slider – новостной слайдер. Он отражает в форме слайд-шоу изображения со ссылками на ваши статьи и краткие выдержки оттуда. Его можно установить и на новостной сайт,

    Плагины для Wordpress
    С помощью этого плагина вы легко сможете интегрировать Google диск на ваш WordPress сайт или блог . Gravity Forms — лучший плагин для создания форм на WordPress, от самых простых (например, форма

    Подписки плагином JetPack: размещение и редакция формы подписки
    Вступление Здравствуйте! В этой статье я покажу, как использовать плагин JetPack для создания пользовательской формы подписки и как эту формы подписки плагином JetPack добавлять в статьи сайта, а при

    Чистка сайта WordPress плагином WP-optimize
    От автора Со временем использования система WordPress накапливает не нужные файлы, комментарии и неиспользуемые данные в базе данных. Эти файлы и данные создаются в процессе работы и нужны для этого,

    Возможности Jetpack плагина
    Вступление Возможности Jetpack плагина это более 30 функциональных модуля плагина, делающего его универсальным плагином WordPress, заменяющего аналогичные сторонние плагины. Jetpack один заменяет десятки

    Резервное копирование WordPress сайта без плагинов
    Вступление Резервное копирование WordPress это второе, что нужно научиться делать после установки WordPress. Можно сколько угодно говорить о безопасности сайта и его защите, но лучшего варианта защиты

    Плагины на приват для Майнкрафт ПЕ
    > > Плагины на приват для Майнкрафт ПЕ Порой всем нам хочется попробовать себя в роли администратора сервера и испытать эту ответственность, но, к сожалению, вы не всегда все знаете о создании

    Плагин WordPress Database Backup. Архивация базы данных блога на WordPress
    Привет друзья! Сегодня на очереди еще один простой, НО, необходимый и полезный плагин — плагин WordPress Database Backup , который с легкостью и самостоятельно произведет процесс, который научно называется:

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

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

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

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

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

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

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

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

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

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

rss