Этот туториал о доступе к OpenGL в LWJGL и не учит вас OpenGL. LWJGL OpenGL API идентично соотносится 1:1 с C - версией (с некоторыми исключениями). Что позволяет просто использовать или адаптировать любой из множества OpenGL туториалов и руководств в онлайн и использовать их в LWJGL.
Все методы OpenGL находятся в пакете org.lwjgl.opengl.* и сохранены в классах с соответствующими именами GL11, GL12, GL13, GL2.0, ARBVertexShader, ARBFragmentShader, и т.д.
Отрисовка Quad с OpenGL
Код из туториала по Display будет использован здесь с небольшими изменениями для отрисовки четырехугольника (quad) на Display. 2d вида должно быть достаточно для рисования четырехугольника, это задается использованием ортографической матрицы размером 800*600 с расстоянием клиппинга между 1 и -1. Это должно быть установлено лишь один раз и будет вызываться за пределами основного цикла.
Code
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, 800, 600, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
Оставшуюся часть кода необходимо вызывать в каждом кадре и она будет в основном цикле. Этот код очистит экран, установит цвет четырехугольника, и отрисует вершины четырехугольника.
Code
// Очистка экрана и буфера глубины
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
// Установка цвета четырехугольника (R,G,B,A)
GL11.glColor3f(0.5f,0.5f,1.0f);
// отрисовка четырехугольника
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex2f(100,100);
GL11.glVertex2f(100+200,100);
GL11.glVertex2f(100+200,100+200);
GL11.glVertex2f(100,100+200);
//конец отрисовки.
GL11.glEnd();
Полный код:
Code
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
public class QuadExample {
public void start() {
try {
Display.setDisplayMode(new DisplayMode(800,600));
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
System.exit(0);
}
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, 800, 600, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
while (!Display.isCloseRequested()) {
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
// устанавливаем цвет quad.
GL11.glColor3f(0.5f,0.5f,1.0f);
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex2f(100,100);
GL11.glVertex2f(100+200,100);
GL11.glVertex2f(100+200,100+200);
GL11.glVertex2f(100,100+200);
GL11.glEnd();
Display.update();
}
Display.destroy();
}
public static void main(String[] argv) {
QuadExample quadExample = new QuadExample();
quadExample.start();
}
}