【问题标题】:lwjgl not drawing vertex bufferlwjgl 不绘制顶点缓冲区
【发布时间】:2017-02-02 18:08:21
【问题描述】:

我试图让一个超级简单的 lwjgl 应用程序运行,它绘制一个简单的三角形,但找不到正确的调用顺序来使任何有意义的东西出现。我使用一个简单的顶点缓冲区,没有着色器。

由于某种原因,每一帧都是帧右下方的一个白色三角形,而不管实际顶点缓冲区中的内容是什么。

public void run() {

    GLFWErrorCallback.createThrow().set();
    glfwInit();
    glfwDefaultWindowHints();
    glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE);
    glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);

    long h_window = glfwCreateWindow(640, 480, "test", 0, 0);
    glfwShowWindow(h_window);
    glfwMakeContextCurrent(h_window);
    GL.createCapabilities();

    glEnableClientState(GL_VERTEX_ARRAY);

    int b_vertex = glGenBuffers();
    float[] vertex = {
            0,0,0,
            0,0,0,
            0,0,0
    };
    glBindBuffer(GL_ARRAY_BUFFER, b_vertex);
    glBufferData(GL_ARRAY_BUFFER, vertex, GL_STATIC_DRAW);
    glBindBuffer(GL_ARRAY_BUFFER, 0);

    while (!glfwWindowShouldClose(h_window)) {
        glClearColor(0, 0, 0, 0);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glEnableVertexAttribArray(0);
        glBindBuffer(GL_ARRAY_BUFFER, b_vertex);
        glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0L);
        glDrawArrays(GL_TRIANGLES, 0, 3);
        glDisableVertexAttribArray(0);

        glfwSwapBuffers(h_window);
        glfwWaitEventsTimeout(1f / 30f);
    }

}

我肯定错过了一些东西,但不知道它是什么。这是显示的内容:

Screenshot of Running app

【问题讨论】:

    标签: lwjgl


    【解决方案1】:

    找到问题了。

    glVertexPointer(3, GL_FLOAT, 0, 0L);
    

    用于无着色缓冲区描述

    glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0L);
    

    用于缓冲区描述,也将缓冲区绑定到着色器输入

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多