c++ - How to remove unused resources from an OpenGL program -


i trying create effect system opengl, , want able define number of shaders in same file. discovered following problem. have 2 shaders: , b. shader uses texa , shader b uses texb. despite fact neither shader uses texb nor shader b uses texa, both textures enumerated in both programs (i using separate programs, every shader corresponds 1 program). 1 consequence cannot have many textures defined in 1 file since shader fail link (it compiles linker complains number of texture samplers exceeds hw limit). other problem doing automatic resource binding , shaders have lots of false resource dependencies.

so there way tell shader compiler/linker remove unused resources separate program?

shader sampler units not there select textures, pass texture units shader. textures themself bound texture units. selection texture use should not done in shader, in host program.

or use bindless textures if opengl implementation (=gpu driver) supports these.