【发布时间】:2015-06-12 21:24:52
【问题描述】:
我的小型 OpenGL 应用程序在调试模式下工作正常,但如果我在发布模式下构建它,我经常会收到此错误:
Shader Creation Error:
- Vertex shader failed to compile with the following errors:
ERROR: 0:22: error(#132) Syntax error: "]" parse error
ERROR: error(#273) 1 compilation errors. No code generateder code here
奇怪的是,大部分时间都会发生错误,但有时程序运行良好。我认为它与文件流有关,但我无法弄清楚它是什么。
这是我代码的对应部分:
std::ifstream file(fp);
if(!file) crit_error("Shader Loading", ("file "+fp+" doesn't exist").c_str());
file.seekg(0, file.end);
GLint len = GLint(file.tellg());
file.seekg(0, file.beg);
GLchar* buf = new GLchar[len];
file.read(buf, len);
file.close();
std::string type = fp.substr(fp.size()-4, 4);
if(type == ".vsh")
id = glCreateShader(GL_VERTEX_SHADER);
else if(type == ".fsh")
id = glCreateShader(GL_FRAGMENT_SHADER);
else if(type == ".csh")
id = glCreateShader(GL_COMPUTE_SHADER);
glShaderSource(id, 1, (const GLchar**)&buf, &len);
glCompileShader(id);
delete[] buf;
【问题讨论】:
-
尝试将
buf写入文件并查看它。也许你被一个或类似的东西关闭了。此处显示的代码还不足以知道这一点。这将有助于您的问题显示您如何找到len,以及fp是什么。 -
是的,对不起,我忘了那部分
-
有人能告诉我为什么我的问题是-1吗?我做错了什么?
-
您可以考虑阅读How to create a Minimal, Complete, and Verifiable example 来帮助您提出更好的问题。不包括一个好的例子是投票失败的一个常见原因,也是一个要避免的简单原因。很多时候,只需将代码提炼成一个简单的示例就可以帮助您在需要帮助之前解决问题。
标签: c++ opengl visual-studio-2013 release