本文主要是介绍opengl日记27-opengl报错ERROR::SHADER::PROGRAM::LINKING_FAILED,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Author: wencoo
Blog:https://wencoo.blog.csdn.net/
Date: 14/03/2024
Email: jianwen056@aliyun.com
Wechat:wencoo824
QQ:1419440391
Details:
文章目录
- 目录
- 正文 或 背景
- 报错信息ERROR::SHADER::PROGRAM::LINKING_FAILED
- 解决方法
- 情况1
- 情况2
- 参考
- 技术交流
目录
正文 或 背景
报错信息ERROR::SHADER::PROGRAM::LINKING_FAILED
在执行
glGetShaderiv(vertex, GL_COMPILE_STATUS, &success);if (!success){glGetShaderInfoLog(vertex, 512, NULL, infoLog);// std::cout << "ERROR::SHADER::VERTEX::COMPILATION_FAILED\n" << infoLog << std::endl;printf("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n");}
出现报错,分析:报错信息不足,补充报错信息,修改printf内容printf("ERROR::SHADER::VERTEX::COMPILATION_FAILED:%s\n",infoLog);
,输出报错
error C0000:syntax error,unexpected '!',expecting "::" at token "!"
还有其他错误,但是都是类似的报错信息
解决方法
上面的报错,是说顶点着色器语法错误,但是明明这个着色器文件在另一个程序中是没有什么报错的,现在怎么就报错了,我的程序就是基于那个程序修改来的啊。
经过不停的尝试,
情况1
发现一次将着色器文件中的空白行,还有注释删除后,程序编译过了,变得正常了。
情况2
第二次,按照上面的方法不管用了,最后将version后面的core去掉后,程序编译过了,变得正常了。
着色器文件示例
#version 330 core
layout (location = 0) in vec3 vertex; // xxx
layout (location = 1) in vec3 color;
layout (location = 2) in vec2 texCoord;
out vec2 TexCoords;
out vec3 ourColor;uniform mat4 projection;void main()
{gl_Position = projection * vec4(vertex, 1.0);ourColor = color;TexCoords = texCoord;
}
修改后的文件
#version 330
layout (location = 0) in vec3 vertex;
layout (location = 1) in vec3 color;
layout (location = 2) in vec2 texCoord;
out vec2 TexCoords;
out vec3 ourColor;
uniform mat4 projection;
void main()
{gl_Position = projection * vec4(vertex, 1.0);ourColor = color;TexCoords = texCoord;
}
由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,可以加我微信 wencoo824。QQ:1419440391。
参考
技术交流
欢迎加微信,搜索"wencoo824",进行技术交流,备注”博客音视频技术交流“
这篇关于opengl日记27-opengl报错ERROR::SHADER::PROGRAM::LINKING_FAILED的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!