GLSL编译失败,没有错误日志
GLSL fails to compile, no error log
我正尝试将着色器与OpenGL一起使用,但似乎无法编译着色器。更令人沮丧的是,错误日志似乎也是空的。我在这个网站上进行了广泛的搜索,查看了许多不同的教程,但似乎没有解释它失败的原因。我甚至买了一本关于着色器的书,但它没有考虑到日志文件的消失。
我的感觉是,我链接着色器源的方式一定有错误。
//Create shader
GLuint vertObject;
vertObject = glCreateShader(GL_VERTEX_SHADER);
//Stream
ifstream vertfile;
//Try for open - vertex
try
{
//Open
vertfile.open(vertex.c_str());
if(!vertfile)
{
// file couldn't be opened
cout << "Open " << vertex << " failed.";
}
else
{
getline(vertfile, verttext, ' ');
//Test file read worked
cout << verttext;
}
//Close
vertfile.close();
}
catch(std::ifstream::failure e)
{
cout << "Failed to open" << vertfile;
}
//Link source
GLint const shader_length = verttext.size();
GLchar const *shader_source = verttext.c_str();
glShaderSource(vertObject, 1, &shader_source, &shader_length);
//Compile
glCompileShader(vertObject);
//Check for compilation result
GLint isCompiled = 0;
glGetShaderiv(vertObject, GL_COMPILE_STATUS, &isCompiled);
if (!isCompiled)
{
//Did not compile, why?
std::cout << "The shader could not be compiledn" << std::endl;
char errorlog[500] = {' '};
glGetShaderInfoLog(vertObject, 500, 0, errorlog);
string failed(errorlog);
printf("Log size is %d", failed.size());
}
printf("Compiled state = %d", isCompiled);
着色器代码尽可能的琐碎。
void main()
{
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
我无法编译我的片段或顶点着色器。如果我能显示错误日志,那么至少我可以开始错误检查我自己的工作。不过,就目前而言,我甚至无法了解错误。
在这种情况下,glCompile在没有日志的情况下失败的原因似乎是因为我试图在OpenGL上下文初始化之前执行此操作(glutCreateWindow等)。
如果将来有其他人遇到这个问题,请尝试在创建任何GLSL对象之前获取您的版本。
printf("OpenGL version is (%s)n", glGetString(GL_VERSION));
如果得到"OpenGL版本为(null)",则没有有效的上下文来创建着色器。找到创建上下文的位置,并确保随后创建着色器。
相关文章:
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 我的代码中有错误,未声明的标识符
- C++ LeetCode #377 的 DP 解决方案中,此代码是否有错误?
- 试图建立银行管理系统,但有错误
- 我试图创建临时对象的方式有错误吗
- 我的随机生成器是否不工作,或者我决定人/骨架是否击中对手的方式是否有错误
- 我在OpenCV中有错误的"approxPolyDP(ROI_Vertices, ROI_Poly, 1.0, true)"
- 我在这个 C++ 代码上有错误吗?
- 是视觉C++优化器错误还是我的代码中有错误?
- 为什么一个简单的C++程序会有错误的结果?是 #define 引起的吗?
- 对此有错误
- C :数据文件有错误:预期的无限制ID
- 一个带有参数的程序,为什么此程序有错误的答案
- 仅使用boost.datetime在Windows上有错误
- 使用向量循环时,是否有错误
- Microsoft Visual Studio发现我所有的CUDA设备端函数都有错误
- 我无法弄清楚我的程序的问题,即使我已经查看了错误日志消息
- 继承默认构造函数在 gcc 中失败并在 clang 中工作,哪个有错误?
- 为什么有错误未定义_getws_s
- 为什么 g++ 会产生巨大的错误日志