Я собираюсь купить книгу по 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 и выше?

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

3
Jim Hubbard 30 Авг 2011 в 00:35

2 ответа

Лучший ответ

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

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

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

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

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

4
Mike Lorenz 29 Авг 2011 в 21:33

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

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

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

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

1
Christian Rau 29 Авг 2011 в 21:06