cache repetitive renders (Render only once, then save GL state and then just reuse this state)
make class that will contain all used textures so time to get the texture was not a O(nlog n) but O(1) (May be O(n) because of search of variable but it obviously better than O(nlog n))