Android 错误:启用顶点属性数组时没有数据绑定

Android 错误:启用顶点属性数组时没有数据绑定,android,c++,opengl-es,android-ndk,opengl-es-2.0,Android,C++,Opengl Es,Android Ndk,Opengl Es 2.0,OpenGl新手,目前正在Android NDK上工作。我目前遇到了这个错误,无法解决。我觉得这是基本的,但我可能错了。Appender由java渲染端每帧运行一次 错误: E/emuglGLESv2_enc: glDrawArrays: a vertex attribute array is enabled with no data bound app.cpp: void appRender(long tick, int width, int height){ const float

OpenGl新手,目前正在Android NDK上工作。我目前遇到了这个错误,无法解决。我觉得这是基本的,但我可能错了。Appender由java渲染端每帧运行一次

错误:

E/emuglGLESv2_enc: glDrawArrays: a vertex attribute array is enabled with no data bound
app.cpp:

void appRender(long tick, int width, int height){
    const float vertices[] =
    {
         0.0f,  0.5f, 0.0f,
        -0.5f, -0.5f, 0.0f,
         0.5f, -0.5f, 0.0f
    };

    glClear(GL_COLOR_BUFFER_BIT);

    GLuint vertexBuffer;
    glGenBuffers(1, &vertexBuffer);
    glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

    // Setup colors for each vertex
    GLfloat colors[3*4];
    for (int v = 0; v < 3; v++){
        colors[4*v+0] = 0;
        colors[4*v+1] = 1;
        colors[4*v+2] = 0;
        colors[4*v+3] = 1;
    }

    // Setup color buffer
    GLuint colorBuffer;
    glGenBuffers(1, &colorBuffer);
    glBindBuffer(GL_ARRAY_BUFFER, colorBuffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(colors), colors, GL_STATIC_DRAW);

    glEnableVertexAttribArray(0);
    glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
    glVertexAttribPointer(
        1,
        3,
        GL_FLOAT,
        GL_FALSE,
        0,
        (void*)0
        );

    glEnableVertexAttribArray(1);
    glBindBuffer(GL_ARRAY_BUFFER, colorBuffer);
    glVertexAttribPointer(
        1,
        4,
        GL_FLOAT,
        GL_FALSE,
        0,
        (void*)0
        );


    glDrawArrays(GL_TRIANGLES, 0, 3);
    glDisableVertexAttribArray(0);
    glDisableVertexAttribArray(1);

    glBindTexture(GL_TEXTURE_2D, 0);
    //textRenderer.RenderTexts(0.5f);
    //boxRenderer.RenderBoxes(0.5f);
}
void appender(长刻度、内部宽度、内部高度){
常量浮点顶点[]=
{
0.0f,0.5f,0.0f,
-0.5f,-0.5f,0.0f,
0.5f,-0.5f,0.0f
};
glClear(GLU颜色缓冲位);
GLuint顶点缓冲区;
glGenBuffers(1和vertexBuffer);
glBindBuffer(GL_数组_BUFFER,vertexBuffer);
glBufferData(GLU数组缓冲区、大小(顶点)、顶点、GLU静态图);
//为每个顶点设置颜色
GLfloat颜色[3*4];
对于(int v=0;v<3;v++){
颜色[4*v+0]=0;
颜色[4*v+1]=1;
颜色[4*v+2]=0;
颜色[4*v+3]=1;
}
//设置颜色缓冲区
胶合色缓冲液;
glGenBuffers(1和colorBuffer);
glBindBuffer(GL_数组_BUFFER,colorBuffer);
glBufferData(GLU数组缓冲区、大小(颜色)、颜色、GLU静态图);
GlenableVertexAttributeArray(0);
glBindBuffer(GL_数组_BUFFER,vertexBuffer);
glvertexattributepointer(
1.
3.
浮球,
GL_FALSE,
0,
(无效*)0
);
GlenableVertexAttributeArray(1);
glBindBuffer(GL_数组_BUFFER,colorBuffer);
glvertexattributepointer(
1.
4.
浮球,
GL_FALSE,
0,
(无效*)0
);
gldrawArray(GL_三角形,0,3);
glDisableVertexAttributeArray(0);
glDisableVertexAttributeArray(1);
glBindTexture(GL_TEXTURE_2D,0);
//textrender.RenderTexts(0.5f);
//渲染器盒渲染器渲染器盒(0.5f);
}

所以我找到了它,是的,我很糟糕

glVertexAttribPointer(1,3,...) -> glVertexAttribPointer(0,3,...)

您应该使用
glGetAttriblLocation
而不是
0