windows - 编译和运行 GLSL 程序需要什么?

标签 windows opengl glsl

我正在尝试运行 GLSL example , 但我不能。

错误出现在程序退出的 glGetShaderiv(vShader, GL_COMPILE_STATUS, &status); 行中。 vShader 是文件 vPhong.glsl .

返回的错误是:

0(18) : error C0000: syntax error, unexpected $undefined at token "<undefined>"
0(18) : error C0501: type name expected at token "<undefined>"

我已经“安装”并引用了 GLEW 和 Glut 及其库文件。我用 glewInit 编辑了我的程序。

程序能够找到 .glsl 文件。

奇怪的是我能够运行 precompiled GLSL-demo , 并编译并运行 the project在我的电脑上。非工作程序中的“初始化”与此相同。

我曾尝试将有缺陷的源代码复制到成功的项目中,以查看项目设置中是否存在导致错误的内容,但不幸的是,情况并非如此。 所以错误似乎出在 C++ 代码中,而不是项目中。


进展:

在我的 Windows 7 机器上运行 Visual Studio 时出现“访问冲突”。如果我“单独”运行该程序,它就会停止工作。在 Windows XP 机器上,我遇到了一个未捕获的异常。

我在编译程序时没有收到任何错误或警告(除了 fopen 不安全的警告)。

Visual Studio 突出显示行 vShader = glCreateShader(GL_VERTEX_SHADER); 作为错误的来源。

添加 glewInit(); 修复了上述错误。

最佳答案

program 中有两个错误:

首先:

glLinkProgram(program);
glGetShaderiv(program, GL_LINK_STATUS, &status);

最后一行应该是 glGetProgramiv(program, GL_LINK_STATUS, &status);

此外,在着色器文件中读取的 fopen 应该与 rb 一起用作参数,而不仅仅是 r

glGetProgramiv 替换 glGetShaderiv 并添加 glewInit() 修复了我的一个初始错误。

将参数更改为 fopen 修复了着色器错误。

关于windows - 编译和运行 GLSL 程序需要什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1922656/

相关文章:

c++ - OpenGL 相机/投影

opengl - OpenGL ES 2.0 和 OpenGL 4 的区别

windows - NSIS 卸载程序权限级别

启动应用程序时C# Windows Service COM异常80080005

c# - 为什么 DirectoryInfo.GetFiles() 匹配与掩码不匹配的文件?

c++ - 指没有glGetUniformLocation的制服

c++ - 即使我在着色器中使用了变量,glGetUniformLocation也会返回-1

c# - 检查系统中是否存在 DLL

c++ - 无法链接 GLEW 库

opengl - GLSL 扩展在应该可用时不可用