我在C ++中使用此命令,因为我在没有控制台的情况下启动将输出定向到控制台窗口。我想将shader-errors引导到这个控制台。
我需要完成哪些参数?或者我可以读取FILE数据类型吗?
AllocConsole();
freopen("CONIN$", "r", stdin);
freopen("CONOUT$", "w", stdout);
freopen("CONOUT$", "w", stderr);
答案 0 :(得分:1)
通过glGetShaderInfoLog
报告着色器编译错误。您有责任从OpenGL获取日志并将其写入stdio文件流。像这样的东西
GLint shader_status;
glGetShaderiv(shader, GL_COMPILE_STATUS, &shader_status);
if( shader_status == GL_FALSE ) {
GLint log_length, returned_length;
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length);
char *shader_infolog = calloc(log_length);
if(!shader_infolog) {
goto alloc_infolog_failed;
}
glGetShaderInfoLog(
shader,
log_length,
&returned_length,
shader_infolog);
fputs("Shader compilation failed:\n", stderr);
fwrite(shader_infolog, returned_length, 1, stderr);
fputc('\n', stderr);
free(shader_infolog);
goto failed_compile;
}