optimization: instead of saving bind texture ID, we save bound texture
structure, we can save time by without lookup texture cache