Как я могу сгладить текстуры объектов в OpenGL ES 1.1 (iPhone) - PullRequest
2 голосов
/ 28 сентября 2011

В настоящее время я экспериментирую с OpenGL ES 1.1 на iPhone и пытаюсь разобраться с некоторыми основами.До сих пор мне удалось нарисовать сетку объектов, которые освещены одним GL_LIGHT.Вот снимок экрана текущего результата (вопрос, которому нужно следовать) ...

enter image description here

Итак, вы можете видеть, что мой тест состоит из сетки около 140 кубов - некоторые слегка приподнятытак что я могу видеть, как работают затененные области.Каждый куб состоит из этой модели (из Blender) и имеет координаты нормали / текстуры ...

enter image description here

Что меня удивляет, почему я не получаю "равномерное" освещениепо всей поверхности.Кажется, что каждый куб подсвечивается индивидуально, и я могу понять, почему это так ... но разве невозможно получить световой переход "нормально", как если бы вы выстроили эту модель из блоков и пролили на нее свет?,Я ожидаю не видеть темный край на каждом отдельном кубе, а скорее плавный переход по всей области.

(Я все еще внутренне раздражен, что мне удалось продвинуться так далеко!)

Любая помощь или объяснения были бы потрясающими.Спасибо, Саймон

1 Ответ

2 голосов
/ 28 сентября 2011

Причина, по которой вы не получаете «равномерное» освещение, состоит в том, что я предполагаю, что вы используете освещение на каждую вершину.То есть освещение рассчитывается для каждой вершины и интерполируется по каждому треугольнику, составляющему модель.Так как количество кубов в вашем кубе довольно низкое, переход света по модели не будет выглядеть гладким.

Используя OpenGL ES 1.1, есть два решения для этого.Вы можете использовать модели с большим количеством полигонов или реализовать освещение на пиксель (DOT3).Я не реализовал это сам, но сталкивался с этой проблемой раньше (мое решение было переключиться на OpenGL ES 2.0 и использовать шейдеры для освещения каждого пикселя).

Вот ссылка, которая может бытьиспользование: Что такое освещение DOT3?

Всего наилучшего!

...