Lwjgl Binding - Saar25/PlanetEngine GitHub Wiki
Lwjgl binding
Every opengl and lwjgl object is wrapped with a java class,
Allowing many benefits like strong typing and encapsulation
Code example:
// org.saar.example.Example.java
// Create the window
final Window window = Window.create("Lwjgl", 700, 500, true);
// Create a vertex array object and a vertex buffer object
final Vao vao = Vao.create();
final DataBuffer vbo = new DataBuffer(VboUsage.STATIC_DRAW);
// Allocating and storing data in out object
vbo.allocateFloat(18);
vbo.storeFloat(0, new float[]{
-0.5f, -0.5f, 1.0f, 0.0f, 0.0f, 0.0f,
+0.0f, +0.5f, 0.0f, 1.0f, 0.0f, 0.0f,
+0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f});
vao.loadVbo(vbo,
Attribute.of(0, 2, DataType.FLOAT, false),
Attribute.of(1, 3, DataType.FLOAT, false),
Attribute.of(2, 1, DataType.FLOAT, false));
// Create a simple shaders program
final ShadersProgram shadersProgram = ShadersProgram.create(
Shader.createVertex("/vertex.glsl"),
Shader.createFragment("/fragment.glsl"));
shadersProgram.bindAttribute(0, "in_position");
// Bind our objects
shadersProgram.bind();
vao.bind();
vao.enableAttributes();
// Game loop
final Keyboard keyboard = window.getKeyboard();
while (window.isOpen() && !keyboard.isKeyPressed('E')) {
// Render a triangle
GlRendering.drawArrays(RenderMode.TRIANGLES, 0, 3);
// Update window
window.update(true);
window.pollEvents();
}
// Free all memory
window.destroy();