Вот именно, экран-то плоский. Так что выход всего этого "железа" -- 2D матрица пикселей. Всё к ней сводится.
Я скорее имел ввиду API которым приходится пользоваться для вывода изображений на экран, а не то что фрагментные шейдеры в конечном итоге работают с 2d изображениями. И если хочется что бы всё работало более менее быстро, то приходится по факту использовать 3d примитивы, а не какой-то там framebuffer, в котором всеми пикселями ворочать вручную на CPU.