Difference between revisions of "General FAQ"

From LWJGL
Jump to: navigation, search
(General)
(General)
Line 33: Line 33:
 
import static org.lwjgl.opengl.GL11.*;
 
import static org.lwjgl.opengl.GL11.*;
 
</pre>
 
</pre>
will allow you to use all the methods in GL11 without adding the GL11. part before the method name.
+
will allow you to use all the methods in GL11 without adding the GL11. part before the method name. You can safely statically import all of the LWJGL opengl class that you need as there are not conflicting method names.
  
 
== Building LWJGL ==
 
== Building LWJGL ==

Revision as of 22:57, 31 October 2010

Frequently Asked Questions

This page is a collection questions that occur from time to time. If you have a specific problem, please post a question to the forum.


General

Can I use LWJGL in commercial projects?

LWJGL is distributed under a BSD license which allows you to do whatever you want, as long as you include the LWJGL license, and any components you use (OpenAL, Jinput, Slick-Util, etc).


I have a problem with LWJGL, how do I get help?

There are a lot of options for getting help, most notably the IRC channel (#lwjgl on irc.freenode.net) and the Forum. We also have a forum on javagaming.org.


How can I load images and sounds with LWJGL?

Well there are a number of libraries out there to allow you do this and you could always write your own image and sound loaders. However currently the recommended way to load various texture and sound formats in LWJGL is to use the Slick-Util library (note different from Slick2D).

You can get it from http://slick.cokeandcode.com/downloads/util/ and the javadoc is located at http://slick.cokeandcode.com/javadoc-util/

Its pretty easy to use, just download the package and have a look at the examples included in the source code on how to use it.

LWJGL's API starts with GL11, GL12, GL13, etc, how can I use it without needing to add those to every OpenGL method?

LWJGL's api is intentionally designed like that in order to allow you to easily target specific version of OpenGL. However if you do want to code without the class name before the method, you can simply just use java's static import feature.

for example adding

import static org.lwjgl.opengl.GL11.*;

will allow you to use all the methods in GL11 without adding the GL11. part before the method name. You can safely statically import all of the LWJGL opengl class that you need as there are not conflicting method names.

Building LWJGL

Fetching the latest code from Subversion and running the ANT build.xml should build the lwjgl project jar files in libs/ and the natives in the subdirectories windows, linux, macosx or solaris.

Distributing LWJGL Applications

What options do I have to distribute my LWJGL Application?

There are a number of technologies that you can use.


  • Java Web Start is deployment technology created originally by Sun and is shipped and installed with all Oracle Java run times. It allows java to run a jnlp (xml) file and start your application. Where its setup correctly it can allow launching an external java application directly from a web browser.


  • The Java Applet plugin can embed LWJGL Applets and run them directly in the browser. LWJGL also comes with an AppletLoader that can help deploy the tricky parts of LWJGL for you like the natives etc. Alternatively you can use JNLP Applets to deploy LWJGL as an applet for you.


  • LWJGL Application can also be distributed as standalone packages. A package will contain all the necessary jars and native files (also possible to include your own jvm with the package). The Java virtual machine is then started by telling it which jars to add to the class path, natives to the library path and the main class of your application. This is usually automated by a batch script or binary executable file. There are a number of tools available to automatically create an executable file for you such as Launch4J, JSmooth or Exe4J.


  • Executable Jar - If Java is already installed correctly, java jars are executable when clicked. However the issue is since LWJGL uses native files they need to be outside the jar before the jvm can use them (you could create a mechanism that extracts them when executing the jar). Secondly you will have to set the location of the native libraries in your code before LWJGL tries to load them.


  • Compiling LWJGL Application to native code. This method will compile your java code to native code and provide you a proper native executable binary (unlike the above tools which just wrap executables that work like a batch script and still use java). However there are many advantages and disadvantages to compiling java to native code. The two common tools to achieving this are the free GCJ compiler or the commercial Excelsior Jet application. Both can be made to work with LWJGL.


Can I use LWJGL with GCJ?

Yes. GCJ 4.0 and greater support LWJGL applications and are able to compile executables. Do note at the time of writing this the GCJ garbage collector is very weak and likely to cause performance problems. It is possible however to write java code in such a way that produces very little or no garbage at all in which case GCJ is pretty good.