Shader无法编译而没有错误消息(Haskell OpenGL绑定)

时间:2019-10-06 09:01:39

标签: haskell opengl glsl

我正在尝试使用Haskell GLUT和OpenGL绑定(基本上是正常OpenGL类型和功能的直接转换)绘制一个球体。编写代码时,我遵循了Sven Panne(OpenGL绑定的作者)编写的an example,并且由于他的shader loading code支持错误记录,所以我决定将其复制到我的项目中。但是,当我尝试编译我的顶点着色器时,编译失败并显示消息“用户错误(编译日志:)”,并且没有实际的编译日志。

我尝试单独运行Sven Panne的三角形示例,以确保该库或我的OpenGL版本没有问题,并且该程序运行正常。我复制粘贴了其他人的着色器,并尝试对其进行编译,但收效甚微。我已经确定该程序能够通过将其打印到控制台来真正打开着色器文件并读取源代码。

我的顶点着色器看起来像这样:

#version 430 core

layout(location = 0) in vec3 vPosition;

out vec4 color;

void main()
{
   gl_Position = vec4(vPosition, 1.0);
   color = vec4(1.0f, 0.5f, 0.2f, 1.0f);
}

如果有人好奇,我的片段着色器看起来像:

#version 430 core

in vec4 color;
out vec4 fColor;

void main()
{
   fColor = color;
}

如果有人有兴趣查看我的其余代码,则将其上传到Github(很麻烦,但是我已经尝试调试了一段时间了)。

1 个答案:

答案 0 :(得分:1)

我终于找到了问题。在实际进行其他初始化之前,我尝试编译着色器并制作程序,这是导致错误的原因。现在,在设置窗口并指定各种OpenGL选项之后,我现在正在编译着色器并链接程序。