OpenGL против OpenGL ES и OpenGL 1.x против OpenGL 2.0 Что изучать? - PullRequest
3 голосов
/ 30 августа 2011

Я собираюсь купить книгу по OpenGL, но у меня есть несколько вопросов относительно того, что я должен изучать.

Я разрываюсь между тем, чтобы посвятить себя изучению OpenGL 1.x или OpenGL 2.0, потому чтоOpenGL ES 2.0 существует только в 3G и за его пределами, и если бы я разработал приложение и разместил его в магазине приложений, я бы хотел, чтобы все, у кого есть iphone, могли использовать приложение.

Кроме того, я хочуЭксперимент с настольным OpenGL.

Итак, мой вопрос таков:

Проще говоря, что я должен изучать?Если бы я изучал Desktop OpenGL, легко ли это было бы перенести в OpenGL ES?Например, если бы я знал OpenGL в c / c ++, знал бы я также OpenGL ES, в чем здесь основные различия?

Кроме того, вы бы порекомендовали мне изучить и 1.x, и 2.0 по конкретной причине, о которой я говорил ранеечто бы я хотел, чтобы все владельцы iphone могли использовать мое приложение, не только 3G и не только?

Наконец, есть ли книги, которые вы бы порекомендовали?Мне действительно нравится стиль этого учебника.За ним очень легко следить, он показывает много кода и тщательно объясняет каждую строку кода.

Ответы [ 2 ]

4 голосов
/ 30 августа 2011

Я сам столкнулся с тем же вопросом, и я решил использовать OpenGL ES 2.0. Во-первых, потому что подавляющее большинство используемых на сегодняшний день устройств iOS может запускать его (iPhone 3GS или лучше). Во-вторых, потому что будущее OpenGL - шейдеры, потому что они предлагают гораздо большую гибкость, чем фиксированный конвейер ES 1.

Тем не менее, я добавлю, что использовать шейдеры нелегко. Требуется гораздо больше усилий, чтобы все настроить в ES 2, чем в ES 1. Многое еще может пойти не так, и много раз вы будете смотреть на вашу программу, создавая только пустой экран, оставляющий вас поцарапать голова и интересно, почему.

Однако, как только вы освоите основы, ES 2 не так уж и плох. Это просто крутая кривая обучения.

Что касается рабочего стола против ES, я бы порекомендовал изучить ES. Это очень приятное и функциональное подмножество OpenGL, которое позволит вам писать программы, которые работают на многих других платформах. Использование полного OpenGL может привести к неприятностям, если вы захотите перенести свой код на ES, поскольку есть аспекты, которые не переводятся.

Для начала работы с OpenGL ES 2 я настоятельно рекомендую это руководство и эту книгу .

1 голос
/ 30 августа 2011

OpenGL ES 1.1 использует большую часть устаревшей функциональности, тогда как OpenGL ES 2.0 использует современный подход к вершинному массиву / буферу только для шейдеров, что делает его более готовым к будущему.Если вы изучите настольный GL, у вас не будет особых сложностей с использованием OpenGL ES, так как они очень похожи.

Если вы действительно хотите использовать OpenGL ES 1.1 старого стиля, то я предлагаю вам изучить OpenGL 2.0 для настольного компьютера (лучше всего это делать с помощью «Руководства по программированию OpenGL» / «Красная книга»), который научит васстарый непосредственный API наряду с современными функциями вершинного массива / буфера и (вместе с книгой «Язык шейдеров OpenGL» / «Оранжевая книга»), а также использование программируемых шейдеров.Таким образом, вы будете готовы использовать старый (1 / (2)) и современный ((2) / 3/4) настольный GL вместе с OpenGL ES 1.1 и 2.0.

Но если вы хотитечтобы начать непосредственно с нового и современного способа программирования OpenGL (что может быть целесообразно, хотя старый стиль является ценным опытом), тогда я бы предпочел использовать новейшую редакцию OpenGL SuperBible", который научит вас настольному OpenGL в современном стиле ((2) / 3/4) без устаревшей функциональности.Но тогда большая часть кода OpenGL ES 1.1 будет вам не очень полезна (хотя вы наверняка поймете его принципы).Хотя я действительно ценю свои знания OpenGL в старом стиле с фиксированными функциями, я бы скорее предложил новичкам начать с современного OpenGL прямо сейчас, даже если учиться для новичка может быть немного сложнее, так как это способделайте аппаратно-ускоренную графику в реальном времени сегодня (и завтра).

Но что действительно важно, так это то, что в отличие от изучения API, вы должны понимать основные принципы и принципы трехмерной графики в целом.Тогда у вас не будет особых проблем с переключением на другие API, такие как Direct3D, в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...