在opengl中删除未使用的纹理
Deleting unused textures in opengl
在浏览这里时,我注意到一些奇怪的事情。
加载压缩纹理并获取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 );
是的,这是正确的。
一些OpenGL实现(如AMD和nVidia驱动)倾向于返回升序的资源ID,从1开始。如果这是代码分配的第一个纹理,并且采样器是着色器程序中的第一个统一,那么id将匹配,并且代码意外地工作。然而,它可能会在其他平台(如英特尔驱动程序)上中断,或者当使用更多资源时。
相关文章:
- 普通环路未使用gcc 4.8.5自动矢量化
- 在更改for循环的第三部分后,未使用for循环结果
- 使用typeid警告未使用的变量
- C++删除未使用的类属性会导致 std::logic_error
- 警告 C4552:">>":未使用表达式的结果
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 为什么我会收到警告,指出函数已使用但未定义,以及已定义但未使用?
- 如果我想链接静态库并删除未使用的符号.txt我应该如何处理 Cmakelist
- 可视化C++载体:未使用的容量
- GCC 中 __attribute__((未使用)) 和 __attribute((未使用)) 之间的区别
- 循环访问还包含未使用元素的字符串数组
- Q维德格特关闭事件(..)未使用 QProcess::terminate() 调用
- Visual Studio "fatal error LNK1104: cannot open file"未使用或包含的库
- G++ 编译器是否在未使用返回值的情况下将 constexpr 函数视为常规函数?
- 链接器输入文件未使用,因为链接未完成,我无法获得.o
- 未使用的C++未优化的静态成员函数/变量
- 仅当一个参数中未使用 std::function 时,模板函数替换才有效
- 如何控制或优化或删除或释放 UNION 中未使用的内存
- 未使用的 asm() 在不受支持的体系结构上的行为
- 在opengl中删除未使用的纹理