OpenGL错误验证失败:未绑定顶点数组对象

2022-05-07 00:00:00 opengl graphics 3d java lwjgl

网格类不再绑定Vao,但它仍然不起作用。一切似乎都应该井然有序。我绑定了Vao,然后是VBO,我创建了着色器,但随后由于未绑定Vao而导致验证失败?多么?我做网状物的时候就把它绑起来了,永远不会解开它。我不明白这个节目。我做错了什么

public boolean create(float vertices[]) {
    vCount=vertices.length/3;
    //generate vao id
    vao=glGenVertexArrays();
    
    
    glBindVertexArray(vao);
    
    vbo=glGenBuffers();
    glBindBuffer(GL_ARRAY_BUFFER, vbo);
    
    //static draw stores data in GPU
    //GL_DYNAMIC_DRAW stores it in ram to be more accessible
    glBufferData(GL_ARRAY_BUFFER, vertices, GL_STATIC_DRAW);//pass vertex data
    /*glEnableVertexAttribArray(0);
    glEnableVertexAttribArray(1);
    glVertexAttribPointer(0, 3, GL_FLOAT, false, VERTEX_SIZE * 4, 0);
    glVertexAttribPointer(1, 2, GL_FLOAT, false, VERTEX_SIZE * 4, 12);*/
    glVertexAttribPointer(0,3,GL_FLOAT,false,0,0);//allocates 3 spaces for x,y,z floats
    
    
    return true;
}

简单的绘制函数。

public void draw() {
    
    glDrawArrays(GL_TRIANGLES,0,vCount);
    
    
}

我应该不需要为相机/对象转换创建缓冲区或其他东西,对吗?此方法仅初始化IS

    glUniformMatrix4fv(uniOProjectionMat,true,obj);
    
    with my shader
    #version 330 core
    layout(location=0) in vec3 position;
    uniform mat4 worldTransform;
    uniform mat4 objectTransform;
    uniform mat4 projection;

    void main(){
        gl_Position=projection*worldTransform * 

对象变换*ve4(位置,1); )

opengl

glValidateProgram检查程序是否可以在当前推荐答案状态下执行。因为核心配置文件上下文中没有标准的顶点数组对象,所以您必须在验证程序之前绑定命名的VAO。
在程序验证之前绑定您的Vao,或者不要调用unBindVAO()。根本不需要解绑VO。

相关文章