Позвольте мне дать действительно простое описание аппаратной установки, которая поможет вам начать, если вы просто хотите рисовать точки, не изучая никаких новых API.
Предположим, камера с углом обзора 90 градусов. И давайте предположим, что вы хотите нарисовать в квадратное окно ширины и высоты w
. Интерпретировать z
координату как расстояние «в» экран.
Затем вы строите точку (x,y,z)
с координатами (X,Y)
, заданной
X = w/2+w/2*x/z
Y = w/2+w/2*y/z
Бит w/2+
- это смещение к центру вашего окна. Бит w/2*
- это масштаб, чтобы ваше поле обзора в 90 градусов заполнило окно. /z
, но это масштаб, который заставляет более отдаленные вещи казаться меньше. Вот и все!
Хотя есть некоторые вещи, на которые стоит обратить внимание. Если z <= 0
, то вы не хотите рисовать эту точку, потому что она находится за камерой или, что еще хуже, в плоскости экрана, что приводит к делению на ноль. И вы можете проверить, что X
и Y
находятся в диапазоне перед рисованием. Если нет, то вы будете пытаться нарисовать точки, которые находятся за пределами вашего поля зрения.
Конечно, OpenGL может сделать многое для вас автоматически, и это позволяет вам изменять камеру, рисовать больше, чем просто точки, вращать точки, а также делать все это очень быстро. Но хорошо сначала изучить принципы.
(Кстати, общепринятым условием является рисование только точек с z<0
вместо z>0
. В этом случае вам нужно заменить +
на -
в приведенном выше коде.)
(Исправлена опечатка. Спасибо, что указали!)