美文网首页
dump纹理数据

dump纹理数据

作者: 这就是昵称 | 来源:发表于2024-03-17 18:38 被阅读0次

    在排查渲染模块的渲染问题时,需要查看纹理数据是否正常,此时需要dump纹理数据来排查问题。

    以 Android 平台为例,dump OES texture 和普通 texture 的代码

    FILE* file_handler_{nullptr};
    file_handler_ = fopen(yuv_file_name.c_str(), "wb");
    
    static void save_texture(int texture_id, bool is_texture_2d, int width, int height, FILE* file_handler) {
        GLint old_fbo;
        glGetIntegerv(GL_FRAMEBUFFER_BINDING, &old_fbo);
    
        GLuint tmp_fbo;
        glGenFramebuffers(1, &tmp_fbo);
        glBindFramebuffer(GL_FRAMEBUFFER, tmp_fbo);
    
        if (is_texture_2d) {
            glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
                                   texture_id, 0);
        } else {
            glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_EXTERNAL_OES,
                                   texture_id, 0);
        }
        std::unique_ptr<uint8_t []> outRgbaBuf(new uint8_t[width*height*4]);
        glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, outRgbaBuf.get());
        {
            fwrite(outRgbaBuf.get(), 1, width * height * 4, file_handler);
        }
        glBindFramebuffer(GL_FRAMEBUFFER, old_fbo);
        glDeleteFramebuffers(1, &tmp_fbo);
    }
    
    

    参考:https://blog.csdn.net/weixin_43931399/article/details/106638116

    相关文章

      网友评论

          本文标题:dump纹理数据

          本文链接:https://www.haomeiwen.com/subject/zzdwzdtx.html