我的引擎中有几个着色器程序,这取决于我加载的模型(lambert,blinn,diffuse plain ...)。一切正常,但是,当我重新加载模型时,着色器索引增加,我的硬件拒绝索引。
重装后...链接[3]:基本蓝色
......链接[6]:基本红色
......链接[9]:基本绿色
:
...链接[30]:基本蓝色
......链接[33]:基本红色
......链接[36]:基本绿色
我加载的最后一个着色器应该具有ID 27.因此,在重新加载时,着色器被编译到下一个ID中。 (28个顶点着色器,29个片段着色器,30个编译程序)。
当我重新加载模型时,我清楚(更好地说,我想我清楚)着色器。
glDeleteProgram(programID);
但身份证不断增加就像身份证一样不会被释放。为了防止ID仍被其他东西使用,比如纹理或vbos,我清除纹理:
glDeleteTextures(1,&handle);
和维也纳国际组织。
glDeleteBuffers(1, &vertexVBOID);
glDeleteBuffers(1, &indexVBOID);
但他们保持着色器ID不断增加。