首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用freopen从Shader读取打印流?

如何使用freopen从Shader读取打印流?
EN

Stack Overflow用户
提问于 2014-05-06 16:11:54
回答 1查看 105关注 0票数 0

我在C++中使用此命令,因为我在没有控制台的情况下启动,以便将输出定向到控制台窗口。我也想将着色器错误定向到这个控制台。

我需要什么参数来完成它?或者是否有我可以读取的文件数据类型?

代码语言:javascript
复制
AllocConsole();
freopen("CONIN$", "r", stdin); 
freopen("CONOUT$", "w", stdout); 
freopen("CONOUT$", "w", stderr); 
EN

回答 1

Stack Overflow用户

发布于 2014-05-06 16:44:00

着色器编译错误通过glGetShaderInfoLog报告。您需要负责从OpenGL获取日志并将其写入stdio文件流。像这样的东西

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23489310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档