在调试版本中,我想在几乎每个OpenGL调用之后检查OpenGL错误,以简化调试。由于这是一项昂贵的操作,因此我不想在发行版本中进行。现在,我正在使用类似的功能:

pub fn debug_panic_on_errors() {
    if cfg!(debug_assertions) {
        get_errors().unwrap();
    }
}

我是否可以始终完全优化此方法,这是正确的吗?有没有更好,更适应 future 的方法?

最佳答案

在 Release模式下,该功能将扩展为if false { … },这对于优化起来非常简单,因此是的,您可以按原样使用它。

如果您偏执狂,可以#[cfg]两个函数,例如

#[cfg(debug_assertions)]
pub fn debug_panic_on_errors() {
    get_errors().unwrap();
}

#[cfg(not(debug_assertions))]
pub fn debug_panic_on_errors() {
}

以便在解析过程中选择结果,以确保我们不依赖优化器。但是我真的不推荐这个...

10-02 02:28
查看更多