Если я создам и свяжу приложение OpenGL, используя только вызовы OpenGL ES 1.x, будет ли оно работать? - PullRequest
2 голосов
/ 10 января 2010

Я пишу игру для OpenGL, которая, надеюсь, будет полезна как для Linux, так и для iphoneOS, я в основном хочу иметь возможность строить с использованием заголовков OpenGL ES 1.5 и запускать ее на моем рабочем столе Linux. Я могу это сделать? IE, я хочу использовать только подмножество вызовов API, общих для OpenGL и OpenGL-ES.

Выполнение вышеизложенного и соединение с обычным libGL.a из моей системы возвращает меня к экрану, но я, похоже, ничего не могу сделать, кроме как изменить цвет фона сцены.

Ответы [ 2 ]

2 голосов
/ 10 января 2010

Я сделал именно это, и это хорошо сработало для меня.

Существует множество расширений OpenGL | ES, которых нет в стандартной версии OpenGL, но очень приятно иметь на платформе с низкой спецификацией.glDrawTexImage - это такое расширение.Эмуляция этих расширений с использованием набора OpenGL-вызовов для настольных систем не представляет особой проблемы.

Также OpenGL | ES поддерживает формат данных с фиксированной точкой для большинства точек входа.Возьмите glClearColorx для примера.Они недоступны для настольных компьютеров OpenGL, поэтому вы должны написать оболочку, если хотите их использовать.Будет немного больше работы, если вы также сохраните свои данные вершин в этом формате.

О - и обратите внимание, что OpenGL | ES не поставляется с библиотекой glu.Вы можете использовать его на рабочем столе, но если вы это сделаете, вам придется переопределить их позже (см. 100 вопросов о gluLookAt и gluUnproject).

1 голос
/ 10 января 2010

Нет такого понятия, как OpenGL ES 1.5. Вы имели в виду 1.1?

Кроме того, как вы получаете окно? Это зависит от платформы.

В любом случае вам все равно следует скомпилировать заголовок, соответствующий той библиотеке, с которой вы будете ссылаться. Вы не знаете наверняка, что устанавливает заголовок (например, в окнах, которые вас не интересуют, но, тем не менее, здесь указаны соглашения о вызовах).

Есть также некоторые вызовы, которые плохо отображаются между 2. Например. API, которые используют только двойные значения в GL, плавают в GLES (из спецификации ES):

Команды только двойной точности DepthRange, Frustum и Ortho являются заменены с одинарной точностью или варианты с фиксированной запятой

Короче говоря, есть немного больше работы, чем просто использование того же кода, хотя рассматриваемая работа все еще минимальна, если вы придерживаетесь подмножества GL ES.

...