加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用片段着色器的OpenGL 3.3不同颜色

发布时间:2020-12-16 07:06:21 所属栏目:百科 来源:网络整理
导读:我正在尝试为3个圆圈着色,但只出现3个白色圆圈.在这个例子中,n是3.每个顶点有5个点,2个位置,3个颜色 这是我认为问题可能存在的地方: glEnableVertexAttribArray(0); glBindBuffer(GL_ARRAY_BUFFER,vertexbuffer); glVertexAttribPointer( 0,2,GL_FLOAT,GL_F
我正在尝试为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,(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_COMPILE_STATUS来检查编译是否成功,并使用glGetShaderInfoLog来检索确切的错误和警告.有关更多详细信息和代码示例,请参见Shader Compilation.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读