LWJGL 3:​​OpenGL Quad 渲染不正确

LWJGL 3: OpenGL Quad is not rendered properly

每当我 运行 这个时,window 就会弹出,我会看到这个。 (When I run the game, I see this)

如果您只需创建一个新的 Java 项目,导入 OpenGL、GLFW 和 LWJGL,以及原生的,然后复制代码(删除包),就可以重新创建

import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL11.*;
import org.lwjgl.opengl.GL;

public class Game {

    public static void main (String[] args) {

        if(glfwInit() != true) {
            System.err.println("GLFW Failed to initialize!");
            System.exit(1);
        }

        long window = glfwCreateWindow(640,480,"Game", 0, 0);

        glfwShowWindow(window);

        glfwMakeContextCurrent(window);
        GL.createCapabilities();

        while(!glfwWindowShouldClose(window)) {

            glfwPollEvents();

            glClear(GL_COLOR_BUFFER_BIT);

            glBegin(GL_QUADS);

            glVertex2d(-0.5,0.5);
            glVertex2d(0.5,0.5);
            glVertex2d(-0.5,-0.5);
            glVertex2d(0.5,-0.5);

            glEnd();

            glfwSwapBuffers(window);

        }

        glfwTerminate();

    }

}

您以错误的顺序绘制了四边形的顶点。尝试

glVertex2d(0.5,0.5);
glVertex2d(-0.5,0.5);
glVertex2d(-0.5,-0.5);
glVertex2d(0.5,-0.5);

对于面向您的四边形(或三角形),您通常按逆时针顺序绘制它们(这称为 "winding"),对于背对您的四边形(这称为 "winding"),您通常按顺时针顺序绘制它们。在你的例子中,你把它们画成了一个无效的字母 "Z"。