c++ - 带字符串的 glGetShaderInfoLog
问题描述
我正在做一个着色器类,它有一个返回着色器日志的方法:
std::string Shader::GetShaderInfoLog(){
GLint TotalLenght=0;
GetShaderiv(GL_INFO_LOG_LENGTH,&TotalLenght);
std::string logs;
logs.reserve(TotalLenght);
glGetShaderInfoLog(name, TotalLenght, NULL, &logs[0] );
return logs;
}
出于奇怪的原因,即使使用有编译错误的着色器,日志字符串也是空的。我尝试过使用 char 数组:
std::string Shader::GetShaderInfoLog(){
GLint TotalLenght=0;
GetShaderiv(GL_INFO_LOG_LENGTH,&TotalLenght);
char logs[TotalLenght];
glGetShaderInfoLog(name, TotalLenght, NULL, logs);
return std::string(logs);
}
而这个工作得很好。所以我的问题是为什么它不适用于字符串?
解决方案
推荐阅读
- javascript - 为什么我会丢失 JSON.stringify() 方法的属性?
- python - 如何在 Python 3 中将字典转换为列表
- php - 找不到类 php
- android - 如何在 ViewModel 中从图库中选择照片
- azure-data-factory - 如何将变量输出到文件?
- flutter - 有没有办法保留子有状态小部件的状态?
- c# - EF DataContext:代码执行时间过长
- python - Python根据字符串列表创建变量名
- java - 如何在回收站视图中获取所有项目的总数
- dialogflow-es - 使用 dialogFlow 自定义有效负载在 whatsapp 中发送图像