gpt4 book ai didi

c++ - 带有片段着色器的 OpenGL 3.3 不同颜色

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:18:02 25 4
gpt4 key购买 nike

我正在尝试为 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

将来,在编译着色器后使用 glGetShaderGL_COMPILE_STATUS 检查编译是否成功,并使用 glGetShaderInfoLog 检索确切的错误和警告。参见 Shader Compilation获取更多详细信息和代码示例。

关于c++ - 带有片段着色器的 OpenGL 3.3 不同颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19744203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com