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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |