0

glDrawElement を使用して四角形を描画するコードを作成します。

Vertex verticesData[] =
    {
        Vertex( Vector3 (-0.5f, -0.5f, 0.0f) , Vector3 (1.0f, 0.0f, 0.0f) ), //0 
        Vertex( Vector3 (-0.5f, 0.5f, 0.0f ) , Vector3 (0.0f, 1.0f, 0.0f)  ), //1
        Vertex( Vector3 (0.5f, 0.5f, 0.0f  ) , Vector3 (0.0f, 0.0f, 1.0f)  ), //2
        Vertex( Vector3 (-0.5f, -0.5f, 0.0f) , Vector3 (0.5f, 0.5f, 0.5f) ) //3
    };

    GLubyte indices[] = 
    {
        0, 1, 2, //1
        0, 2, 3  //2
    };

    glGenBuffers(1, &vboId);
    glBindBuffer(GL_ARRAY_BUFFER, vboId);
    glBufferData(GL_ARRAY_BUFFER, sizeof(verticesData), verticesData, GL_STATIC_DRAW);

    glGenBuffers(1, &indexBufferId);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBufferId);
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);

これは Init() 関数にあります。そして、コード行まで実行すると、プログラムは実行時エラー (アクセス違反) を作成します。

glDrawElements(GL_TRIANGLES, 18, GL_UNSIGNED_BYTE, NULL);

このステートメントは Draw() 関数にあります。私のコードは非常に長いので、すべてのコードをここに投稿することはできませんが、glDrawArray を使用して上記の 2 つのコード ブロックを置き換えても、エラーは発生しません。したがって、問題は上記のコードにあると思います。誰でも私がこの問題を解決するのを手伝ってくれます、

4

1 に答える 1