在浏览时here我注意到了一些奇怪的事情。
加载压缩纹理并将ID提供给着色器均匀
GLuint Texture = loadDDS("uvtemplate.DDS");
// Get a handle for our "myTextureSampler" uniform
GLuint TextureID = glGetUniformLocation(programID, "myTextureSampler");
他使用从glGetUniformLocation
获得的ID删除了纹理 glDeleteTextures(1, &TextureID);
他不应该使用它吗?
glDeleteTextures(1, &Texture );
答案 0 :(得分:2)
是的,这是正确的。
某些OpenGL实现(如AMD和nVidia驱动程序)倾向于从1开始返回升序资源ID。如果这是代码分配的第一个纹理,并且采样器是着色器程序中的第一个统一,那么ID将匹配,代码意外工作。但是,它可能会在其他平台(如英特尔驱动程序)上或在使用更多资源时中断。