LWJGL Мерцание изображения при отрисовке
Я написал программу, выводящую на экран цветной прямоугольник на цветном фоне при помощи OpenGL
, но изображение почему-то мерцает с большой скоростью. Что у меня в коде неправильно? Пример GL кода взят из красной книги OpenGL.
Класс окна на glfw:
import org.lwjgl.opengl.GL;
import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.system.MemoryUtil.NULL;
public class Window
{
private long handle;
public Window()
{
glfwDefaultWindowHints();
glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
handle = glfwCreateWindow(800, 600, "Intro", NULL, NULL);
glfwMakeContextCurrent(handle);
glfwSwapInterval(1);
GL.createCapabilities();
glfwShowWindow(handle);
}
public long handle()
{
return handle;
}
public boolean windowShouldClose()
{
return glfwWindowShouldClose(handle);
}
}
Программа для отрисовки изображения:
import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL15.*;
public class Main
{
public static void main(String[] args)
{
if (!glfwInit())
throw new RuntimeException("Can't initialize GLFW");
var window = createWindow();
init();
while (!window.windowShouldClose())
{
render();
glfwSwapBuffers(window.handle());
glfwPollEvents();
}
glfwTerminate();
}
private static Window createWindow()
{
return new Window();
}
private static void init()
{
glClearColor(0.0f, 1.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0f, 1.0f, 0.0f, 1.0f, -1.0f, 1.0f);
}
private static void render()
{
glColor3f(1.0f, 0.0f, 0.0f);
glBegin(GL_POLYGON);
glVertex3f(0.25f,0.25f,0.0f);
glVertex3f(0.75f,0.25f,0.0f);
glVertex3f(0.75f,0.75f,0.0f);
glVertex3f(0.25f,0.75f,0.0f);
glEnd();
glFlush();
}
}
Источник: Stack Overflow на русском