Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenGL 3.3使用片段着色器的不同颜色_C++_Opengl_Colors_Shader_Opengl 3 - Fatal编程技术网

C++ OpenGL 3.3使用片段着色器的不同颜色

C++ OpenGL 3.3使用片段着色器的不同颜色,c++,opengl,colors,shader,opengl-3,C++,Opengl,Colors,Shader,Opengl 3,我试图给3个圆圈涂上颜色,但只有3个白色圆圈出现。在这个例子中n是3。每个垂直点有5个点,2个表示位置,3个表示颜色 我认为问题可能就在这里: glEnableVertexAttribArray(0); glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer); glVertexAttribPointer( 0, 2, GL_

我试图给3个圆圈涂上颜色,但只有3个白色圆圈出现。在这个例子中n是3。每个垂直点有5个点,2个表示位置,3个表示颜色

我认为问题可能就在这里:

    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;
(张贴评论中的解决方案以标记此问题已回答。)

这两行末尾缺少分号:

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

将来,在编译着色器后,使用
glGetShader
GL\u COMPILE\u STATUS
检查编译是否成功,并使用
glgetshaderingfolog
检索准确的错误和警告。有关详细信息和代码示例,请参阅。

事实上,到目前为止,您发布的部分在我看来还不错。你能把代码贴在创建顶点数组和创建/填充缓冲区的地方吗?我忘了在片段着色器中给颜色和颜色向量分号。。。我已经看了好几个小时了。感谢您查看shader info log可能会警告您此解析错误,如果您还没有意识到此功能,请参阅:也许像@Andon M.Coleman这样的人可以将其写入答案中,以便将其标记为已关闭?@AndrewSeymour:标准方法只是让您编写正确的答案并接受它