繁体   English   中英

即使编译失败,是否还需要删除OpenGL着色器对象?

[英]Do I need to delete OpenGL shader objects even if compilation fails?

着色器编译失败时,是否需要删除着色器? 失败的着色器也包括在这个过程中吗?

像这样:

for(size_t Size = 0; Size < this->Shaders.size(); Size++) //"Shaders" is a vector.
{       
    glDeleteShader(this->Shaders[Size]);
}

是的,你必须删除它们。 根据文档glCreateShader创建一个空的着色器对象。 因此,即使后续尝试连接着色器源( glShaderSource )和/或编译所述源( glCompileShader )失败,您仍然会分配一个需要通过调用glDestroyShader来销毁的着色器对象。


TL; DR:始终销毁您创建的着色器对象,即使编译失败也是如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM