package org engine import org lwjgl LWJGLException import org lwjgl op

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package org.engine;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
/*
* Класс создаёт инициализирует окно с чёрным фоном и квадратом
*
*/
public class GLEngine {
private int width; // ширина окна
private int height; // высота окна
private String title; // заголовок окна
// начальные координаты квадрата
private int x = 400;
private int y = 300;
// конструктор
public GLEngine(String title, int width, int height, int x, int y) {
this.width = width;
this.height = height;
this.title = title;
this.x = x;
this.y = y;
}
private void initGL() {
try {
Display.setDisplayMode(new DisplayMode(width, height)); // устанавливаем размер окна
Display.setTitle(title); // устанавливаем заголовок
Display.create(); // создаём окно
} catch (LWJGLException e) {
e.printStackTrace(); // если не получилось, то падаем
System.exit(1);
}
GL11.glMatrixMode(GL11.GL_PROJECTION); // устанавливаем матрицу. GL_PROJECTION - все изменения будут применяться к проекционной матрице
GL11.glLoadIdentity(); // делаем текущую матрицу единичной
GL11.glOrtho(0, width, 0, height, 1, -1); // устанавливаем работу с ортографической проекцией
GL11.glMatrixMode(GL11.GL_MODELVIEW); // все последующие изменения будут применяться к объектно-видовой матрице
}
// метод начинает работу класса
public void start() {
initGL();
while (!Display.isCloseRequested()) { // пока окно не закрыто
render(); // будем рендерить изображение
Display.update(); // и обновлять дисплей
}
Display.destroy(); // в конце уничтожим окно
}
public void render() {
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); // очищает окно и устанавливает буферизацию
GL11.glColor3f(255.0f, 255.0f, 255.0f); // устанавливаем для квадрата белый цвет
// начинаем описывать наш квадрат
GL11.glBegin(GL11.GL_QUADS);
// устанавливаем координаты крайних точек квадрата
GL11.glVertex2f(x - 50, y - 50);
GL11.glVertex2f(x + 50, y - 50);
GL11.glVertex2f(x + 50, y + 50);
GL11.glVertex2f(x - 50, y + 50);
// заканчиваем описывать наш квадрат
GL11.glEnd();
}
}