GLSL链接错误
GLSL link error
我目前正在撕裂我的头发在沮丧关于我得到的错误,而试图编译GLSL着色器,我已经成功地设法编译两个着色器,但当涉及到链接它们我得到一个错误。没有输出,但是链接失败。
下面是编译+链接代码:
GLuint program = NULL;
GLint compile_ok = GL_FALSE, link_ok = GL_FALSE;
GLuint vs = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vs, 1, &vertCont, NULL);
glCompileShader(vs);
glGetShaderiv(vs, GL_COMPILE_STATUS, &compile_ok);
char logBuf[1024];
int len;
if (0 == compile_ok)
{
glGetShaderInfoLog(vs, sizeof(logBuf), &len, logBuf);
LogMgr::logMessage(LogMgr::CRITICAL, "Error in vertex shadern", logBuf);
return false;
}
GLuint fs = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fs, 1, &fragCont, NULL);
glCompileShader(fs);
glGetShaderiv(fs, GL_COMPILE_STATUS, &compile_ok);
if (!compile_ok)
{
glGetShaderInfoLog(vs, sizeof(logBuf), &len, logBuf);
LogMgr::logMessage(LogMgr::CRITICAL, "Error in fragment shader", logBuf);
return false;
}
glAttachShader(program, vs);
glAttachShader(program, fs);
glLinkProgram(program);
glGetProgramiv(program, GL_LINK_STATUS, &link_ok);
if (!link_ok)
{
glGetShaderInfoLog(vs, sizeof(logBuf), &len, logBuf);
LogMgr::logMessage(LogMgr::CRITICAL, "Could not link basic shaders!", logBuf);
return false;
}
return program;
这里是顶点着色器
#version 330
layout(location = 0) in vec4 position;
void main()
{
gl_Position = position;
}
片段着色器:
#version 330
out vec4 outputColor;
void main()
{
outputColor = vec4(1.0f, 0.0f, 1.0f, 1.0f);
}
什么线索吗?
调用getShaderInfoLog是错误的。你总是检查顶点着色器的编译日志。这就解释了为什么没有看到任何错误消息。这就是复制粘贴代码的效果;)
对于片段着色器,它应该是:
glGetShaderInfoLog(fs, sizeof(logBuf), &len, logBuf);
链接状态:
glGetProgramInfoLog(program, sizeof(logBuf), &len, logBuf);
问题是我没有创建程序对象。我在链接之前添加了这行代码,它工作了:
program = glCreateProgram();
相关文章:
- Netbeans 10:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- CMake 错误:链接器命令失败,退出代码为 1 和 cpp.o 文件
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 如何修复 clang: 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- Android NDK.Build命令失败.未定义的引用.clang++:错误:链接器命令失败,退出代码为1
- 使用cmake错误链接boost日志
- 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用):在 Macbook 上
- C++ XCODE ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -
- clang:错误:链接器命令失败,C++代码中的退出代码为 1(使用 -v 查看调用)
- 静态库中的 g++ 错误链接函数
- 未定义的参考错误链接天然函数Android
- C++编译错误:ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v
- QT Q_PROPERTY错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- OSX MOJAVE -LD:架构X86_64 clang找不到符号:错误:链接器命令失败,出口代码1
- C 错误链接器命令失败了出口代码1(使用-V查看调用)
- LD:架构x86_64 clang找不到符号:错误:链接器命令失败,出口代码1(使用-v to See
- 聚输出错误 - 链接列表
- Xcode链接器错误:链接器命令失败,退出代码为1(使用-v查看调用)
- 尝试构建C DLIB示例无法与数百个未定义的参考错误链接