6

3 つの円に色を付けようとしていますが、白い円が 3 つしか表示されません。この例では、n は 3 です。各頂点には、位置に 2 つ、色に 3 つの 5 つのポイントがあります。

ここに問題があると思われる場所があります:

    glEnableVertexAttribArray(0);
    glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
    glVertexAttribPointer(
        0,                  
        2,                 
        GL_FLOAT,           
        GL_FALSE,          
        5*sizeof(float), 
        (void*)0            
    );

    glEnableVertexAttribArray(1);
    glVertexAttribPointer(
        1, 
        3,
        GL_FLOAT,
        GL_FALSE, 
        5*sizeof(float), 
        (void*)(2*sizeof(float))
    );

    glDrawElements(GL_TRIANGLES, 20 * 3 * n, GL_UNSIGNED_INT, 0);

    glDisableVertexAttribArray(0);
    glDisableVertexAttribArray(1);

私のシェーダー:

#version 330 core

in vec3 Color;

out vec4 outColor;

void main()
{
    outColor = vec4(Color, 1.0);
}


#version 330 core

layout(location = 0) in vec2 position;

layout(location = 1) in vec3 color
out vec3 Color

void main(){
    gl_Position = vec4(position, 0.0, 1.0);
    Color = color;
}

アンディをご覧いただきありがとうございます

編集:

layout(location = 1) in vec3 color
    out vec3 Color

layout(location = 1) in vec3 color;
    out vec3 Color;
4

1 に答える 1

2

(コメントから解決策を投稿して、この質問に回答済みとしてマークします。)

次の 2 行の末尾にセミコロンがありません。

layout(location = 1) in vec3 color
out vec3 Color

今後は、シェーダーをコンパイルした後にglGetShaderwithを使用してGL_COMPILE_STATUS、コンパイルが成功したかどうかを確認しglGetShaderInfoLog、正確なエラーと警告を取得します。詳細とコード サンプルについては、シェーダー コンパイルを参照してください。

于 2015-05-24T17:34:10.637 に答える