Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 编译和运行GLSL程序需要什么?_Windows_Opengl_Glsl - Fatal编程技术网

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

Windows 编译和运行GLSL程序需要什么?,windows,opengl,glsl,Windows,Opengl,Glsl,我正试着开一家公司,但我办不到 错误在glGetShaderiv(vShader、GL\u COMPILE\u STATUS和STATUS)行中程序退出的位置vShader是文件 返回的错误为: 0(18) : error C0000: syntax error, unexpected $undefined at token "<undefined>" 0(18) : error C0501: type name expected at token "<undefined>

我正试着开一家公司,但我办不到

错误在
glGetShaderiv(vShader、GL\u COMPILE\u STATUS和STATUS)行中程序退出的位置
vShader
是文件

返回的错误为:

0(18) : error C0000: syntax error, unexpected $undefined at token "<undefined>"
0(18) : error C0501: type name expected at token "<undefined>"
0(18):错误C0000:语法错误,意外$undefined位于令牌“”
0(18):错误C0501:标记“”处应为类型名称
我已经“安装”并引用了GLEW和Glut及其lib文件。我已经
glewInit
”编辑了我的程序

程序能够找到.glsl文件

奇怪的是,我可以运行一个,也可以在我的电脑上编译和运行。非工作程序中的“初始化”和这是一样的

我曾尝试将有缺陷的源代码复制到成功的项目中,以查看项目设置中是否存在导致错误的内容,但不幸的是,事实并非如此<因此,错误似乎在C++代码中,而不是在项目中。<强> < /P>
进度:

在我的Windows7机器上,我在运行VisualStudio时遇到了“访问冲突”。如果我“独自”运行该程序,它就会停止工作。在WindowsXP机器上,我得到了一个未捕获的异常

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

Visual Studio高亮显示了线
vShader=glCreateShader(GL_顶点_着色器)作为错误源


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

我不确定您是如何编译代码的。它使用的GL API在windows SDK中不直接可用。所有着色器API都属于该类别

要在windows上访问它们,通常需要使用wgl提供的扩展机制,或者使用扩展包装器

[编辑以添加]

所以。。。让glew init让开!着色器编译在生成失败时提供生成日志(取自):

GLint blen=0;
GLsizei-slen=0;
glGetShaderiv(ShaderObject、GL\u INFO\u LOG\u LENGTH和blen);
如果(blen>1)
{
GLchar*编译器_log=(GLchar*)malloc(blen);
glGetInfoLogARB(ShaderObject、blen和slen、编译器日志);

cout该错误消息通常意味着着色器程序文件本身存在某种错误。根据我的经验,该文件的开头或结尾可能出现意外字符。请尝试将该URL中的文本复制并粘贴到记事本或gedit中,然后保存该文件。

这些错误来自GLSL编译器,而不是C++编译器。在一些着色器的第18行,你有一些东西会混淆GLSL编译器;可能是随机的垃圾或不可打印的字符。对于着色器源,并且在字符串末尾没有NUL终止符

中有两个错误:

第一:

glLinkProgram(program);
glGetShaderiv(program, GL_LINK_STATUS, &status);
最后一行应该是
glGetProgramiv(程序、GL\u链接状态和状态);

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

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


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

程序停止工作时的更多信息(我假设通过visual studio运行它也会向您显示异常的来源)也会有所帮助(当然,前提是链接已修复…)链接不再断开。:)我提供了有关错误发生位置的更多信息。正如我所写的:我正在使用GLEW。链接源文件与我正在使用的源文件之间的唯一区别是我包含了,而不是.doh,对不起。嗯,GLEW可能隐藏了问题。是否初始化了GLEW?glCreateShader的值是多少?我忘记初始化glew--。现在顶点着色器显然无法编译。
glLinkProgram(program);
glGetShaderiv(program, GL_LINK_STATUS, &status);