gpt4 book ai didi

c++ - 如何从 OpenGL 程序中删除未使用的资源

转载 作者:行者123 更新时间:2023-11-30 05:44:10 24 4
gpt4 key购买 nike

我正在尝试为 OpenGL 创建类似效果系统的东西,并且我希望能够在同一个文件中定义多个着色器。但是我发现了以下问题。假设我有两个着色器:A 和 B。着色器 A 使用 texA,着色器 B 使用 texB。然后,尽管着色器 A 和着色器 B 都没有使用 texA,但两个纹理都将在两个程序中被枚举(我使用的是单独的程序,因此每个着色器对应一个程序)。一个结果是我不能在一个文件中定义很多纹理,因为着色器将无法链接(它编译成功但链接器然后提示纹理采样器的数量超过硬件限制)。另一个问题是我正在执行自动资源绑定(bind)并且我的着色器有很多错误的资源依赖性。

那么有没有办法告诉着色器编译器/链接器从单独的程序中删除所有未使用的资源?

最佳答案

着色器采样器单元不是用来选择纹理的,而是用来将纹理单元传递给着色器的。纹理本身绑定(bind)到纹理单元。所以选择使用哪个纹理不应该在着色器中完成,而应该在宿主程序中完成。

或者如果您的 OpenGL 实现(=GPU 驱动程序)支持这些,您可以使用无绑定(bind)纹理。

关于c++ - 如何从 OpenGL 程序中删除未使用的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29911554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com