Блоки OpenGL ES - PullRequest
       25

Блоки OpenGL ES

1 голос
/ 18 мая 2011

Я разрабатываю приложение для iPhone.

Я использую OpenGL для отображения 3D-объекта на экране с видом камеры в качестве фона.

Я хотел бы знать, как я могу изменить единицу измерения OpenGL ES на сантиметры / метры.

Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 18 мая 2011

Вы не делаете.

Время мысленного эксперимента!

Сначала представьте, что у вас есть сфера диаметром 1 сантиметр.И у вас есть камера на расстоянии 10 сантиметров.Вы бы увидели маленькую сферу в центре кадра.

Теперь представьте, что у вас есть сфера диаметром 1 километр и камера на расстоянии 10 километров.Как вы ожидаете, что изображение будет другим?

Правильный ответ: вы бы не ожидали, что изображение вообще изменится.Все, что действительно имеет значение, это относительные размеры вещей.Таким образом, тип единицы измерения, который вы приписываете числам, имеет значение только для программиста, а не для программы.

Итак, вы просто мысленно заявляете, что одна единица равна одному сантиметру, и создаете свои объекты и мир в соответствии с этиммасштаб.Нет изменений уровня кода, чтобы это произошло.Это просто соглашение, которое вы используете, чтобы помочь вам построить вещи в правильных измерениях относительно друг друга.

2 голосов
/ 18 мая 2011

OpenGL не имеет понятия для юнитов.Он просто использует значения без единиц измерения.Что эти значения означают, зависит от вас.Они просто должны быть последовательными.Поэтому, если все координаты ваших объектов и параметры просмотра заданы с учетом метров, и у вас есть объект, координаты которого указаны в сантиметрах, просто масштабируйте этот объект с коэффициентом 0,1.

...