Во всех современных играх используется z-buffer. В том числе всяких GTA V.
И если рисовать сначала ближние объекты, то отрисовка перекрытых z-буфером фрагментов будет аппаратно отсекаться видеокартой, а это очень быстро. Полностью они отрисовываться чаще всего не будут.
Плюс, в игре никогда не будет ситуации с 99 полнополигональными деревьями на одной линии, ибо кроме z-буфера используются и другие технологии.
Например, благодаря LOD, полное количество полигонов будет только у самых ближних объектов, а чем дальше объект, тем более низкополигональная его версия будет подставляться вместо него. Вместо самых далеких объектов вообще будут плоские картинки.
Благодаря деревьями видимости из кадра будет убираться часть объектов, которые сейчас не должны быть видимы камерой, они просто не будут рисоваться, потому что движок поймет, что они перекрыты от взгляда.
итд...
Есть способы местами обойтись без z-буфера. Например, для помещений используют двоичные деревья, чтобы рисовать стены в порядке от самых ближних к самым дальним.
Плюс, для объектов с прозрачностью z-буфер использоваться вообще невозможно, приходится сортировать грани и рисовать их в порядке от дальних к ближним, чтобы прозрачность корректно накладывалась.
Короче, нюансов вагон и маленькая тележка.
Советую на хабре почитать серию постов "как рендерится кадр в игре n"
https://habr.com/ru/company/ua-hosting/blog/271931/ там довольно хорошо показаны все шаги, в том числе z-буфер.