Ibr*_*pek 3 c++ opengl
着色器编译失败时,是否需要删除着色器?失败的着色器也包括在这个过程中吗?
像这样:
for(size_t Size = 0; Size < this->Shaders.size(); Size++) //"Shaders" is a vector. { glDeleteShader(this->Shaders[Size]); }
nsh*_*hct 6
是的,你必须删除它们.根据文档,glCreateShader创建一个空的着色器对象.因此,即使后续尝试附加着色器源(glShaderSource)和/或所述源(glCompileShader)的编译失败,您仍然分配了一个需要通过调用来销毁的着色器对象glDestroyShader.
glCreateShader
glShaderSource
glCompileShader
glDestroyShader
TL; DR:始终销毁您创建的着色器对象,即使编译失败也是如此.
归档时间:
9 年,5 月 前
查看次数:
194 次
最近记录: