Я правильно понял, что метод DrawEngine3D::Draw может вызываться несколько раз и при каждом вызове он может загружать текстуру?
То есть:
C++ (Qt)
DrawEngine3D eng( ... );
...
eng.draw(); // Загрузили одну текстуру
...
eng.draw(); // а здесь другую
Да, напр если появилась новая текстура между 2-мя вызовами draw
А отключение текстур происходит только при разрушении объекта eng?
Не только, при удалении текстуры тоже. Также текстура может перегрузить имедж сама. Напр. пользователь не менял объект Texture, а подобрал для нее др. картинку. Тогда надо просто вызвать Texture::RemoveFromAllEngines()