Визуализация OpenGL GL_POINTS на устройствах iPhone / iPad выглядит ужасно (но в симуляторе выглядит вполне нормально) - PullRequest
3 голосов
/ 16 марта 2012

Я создал игру OpenGL ES, которая рендерится с помощью GLKView на iOS. Я также добавил несколько пользовательских кнопок UIB, которые расположены поверх GLKView. При рендеринге я рисую некоторые звезды, используя режим рендеринга GL_POINTS. Все выглядит хорошо в симуляторе, но выглядит ужасно на устройстве.

Мне было интересно, есть ли у кого-нибудь какие-либо советы относительно того, что я должен настраивать / искать на устройстве, которое может потребоваться настроить для получения правильного отрендеренного изображения.

Вот несколько изображений результатов:

Simulator

Screenshot of game running on iPhone simulator.

Устройство

enter image description here

(Пожалуйста, игнорируйте разницу в масштабировании пользовательских кнопок - скриншот устройства был сделан на iPad).

1 Ответ

3 голосов
/ 19 марта 2012

Оказывается, проблема была в том, чтобы не устанавливать gl_PointSize в шейдере для OpenGL ES. Снимки экрана фактически привели меня к этому решению, потому что звезды (нарисованные в режиме рендеринга GL_POINTS) настолько радикально неверны на устройстве, чем на симуляторе.

Предположительно для настольной версии OpenGL размер точки задается с помощью функции glPointSize по умолчанию (если GL_VERTEX_PROGRAM_POINT_SIZE не включено). В OpenGL ES нет функции glPointSize, поэтому значение размера точки всегда должно указываться с помощью встроенной переменной gl_PointSize в вершинном шейдере.

...