Я немного занимался 3D-программированием несколько лет назад, и, хотя я далеко не эксперт, я думаю, что вы упускаете очень важное различие между классической растровой графикой DrawPixel(x, y)
и типом графики, выполненным с помощью Direct3D и OpenGL..
В те времена, когда еще не было 3D, компьютерная графика в основном состояла из растровых изображений, то есть наборов цветных точек.Эти точки имели соотношение 1: 1 с пикселями на мониторе.
Однако, у этого были многочисленные недостатки, в том числе очень сложное создание 3D и требующий растровых изображений разных размеров для разных разрешений экрана.
В OpenGL / D3D вы имеете дело с векторной графикой.Линии определяются точками в трехмерном координатном пространстве, формы определяются линиями и так далее.Поверхности могут иметь текстуры, можно добавлять источники света, а также различные типы световых эффектов и т. Д. Затем всю эту сцену или ее часть можно просматривать через виртуальную камеру.
То, что вы «видите», хотя эта виртуальная камера представляет собой проекцию сцены на двухмерную поверхность.На данный момент мы все еще имеем дело с векторной графикой.Однако, поскольку компьютерные дисплеи состоят из отдельных пикселей, это векторное изображение должно быть растеризовано, что преобразует вектор в растровое изображение с фактическими пикселями.
Подводя итог, вы не можете использовать координаты экрана / окна, потому что OpenGL основан на векторной графике.