Какие хорошие учебные ресурсы для OpenGL? [закрыто]

Я уже давно использую OpenGL ES на iPhone, и в основном я чувствую себя довольно потерянным за пределами небольшого набора команд, которые я видел в примерах и принимал как свои собственные. Я хотел бы использовать OpenGL на других платформах и хорошо разбираюсь в этом.

Каждый раз, когда я ищу книгу, я нахожу эту БОЛЬШУЮ Библию, которая кажется неинтересной и очень трудной для новичка. Если бы у меня было несколько выходных, чтобы потратить на изучение OpenGL то, что было бы лучшим способом потратить мое время (и деньги)?

87 голосов | спросил 8 revs, 5 users 60%
DFectuoso
1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

15 ответов


36

Будьте внимательны, когда смотрите на обучающие программы OpenGL, потому что многие из них (NeHe) включены, просто учат вас тому, что вам больше не нужно делать. Сегодняшний OpenGL - это другой зверь, который был 10 лет назад.

Некоторые хорошие примеры, позволяющие избежать устаревших вещей, можно найти здесь: http://www.g-truc.net/post-tech-content-sample.html

  

OpenGL Samples Pack 4.0.1.0 - это обновление, которое приносит количество образцов в общей сложности 58 образцов; в том числе 13 образцов OpenGL 4, 33 образца OpenGL 3.3 и 12 образцов OpenGL 2 для Visual Studio 2008 и 2010 в 32 и 64 бит.

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
65

Есть много вещей, из которых вы могли бы научиться. Вот мое мнение о каждом, с точки зрения кого-то нового в OpenGL.

Примеры OpenGL

Существует много примеров кода, который вы можете прочитать. примеры G-truc довольно обширны и охватывают множество дополнительных функций.

Однако, если вы beginner , изучение примеров - ужасный способ узнать. Чтение кода, который вы действительно не понимаете, не научит вас, почему он работает. Действительно, текст на указанной выше ссылке специально и правильно указывает, что примеры не для новичков.

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

Книги OpenGL

Существует множество реальных приобретаемых книг для разработки OpenGL. Я расскажу о своих мыслях о двух крупнейших здесь.

OpenGL Redbook

Это несколько проблематично с чисто практической точки зрения. См. 7-е издание охватывает GL 3.0 и 3.1. Это довольно старый. С тех пор были добавлены lot полезные функции, добавленные в OpenGL, функции, которые изменяют, как вы пишете вещи. И не все они являются аппаратными функциями.

8-е издание будет «скоро» и будет охватывать 4.1. Там нет слов о том, покрывает ли он старые вещи с фиксированной функцией.

Я бы сказал, что эта книга в порядке. Самая большая проблема с этим - организация информации. Это больше похоже на всеобъемлющее справочное руководство, чем на книгу, предназначенную для обучения. Вот что я имею в виду.

Одна из самых важных вещей, которые нужно делать при обучении, - не перегружать ученика неважной информацией. Но Redbook делает именно это. При вводе материала он вводит материал lot . Большая часть этого лишнего к задаче.

То, о чем вы говорите, и когда вы говорите об этом, имеет решающее значение для того, чтобы сделать вашу книгу хорошим учебным ресурсом. Redbook никогда не сдерживает информацию до более подходящего времени. Когда он говорит о том, как рисовать треугольники и примитивы, он рассказывает о все о том, чтобы рисовать их все сразу. Он охватывает каждый параметр, каждую функцию, каждый параметр и т. Д.

Это не очень хорошая организация информации.

OpenGL Superbible

Пятое издание этой книги охватывает только основной GL 3.x, поэтому нет фиксированной функции.

Однако общая организация книги более или менее идентична организации версии четвертого издания. Это кажется невозможным, поскольку 4-е издание использовало фиксированную функцию и не вводило шейдеров до намного позже.

Как это было сделано, моя жалоба № 1 о книге. По сути, автор создал библиотеку, которая реализует форму OpenGL с фиксированной функцией. Он обертывает VAO, объекты буфера, шейдеры и другие другие вещи, так что он может добраться до рисования объектов, матричной математики и текстур без необходимости говорить о таких вещах, как, например, как работает трубопровод GL.

Скрывая все эти детали, он облегчает переваривание материала. Но вы часто увидите, как люди уходят от Superbible, не зная, как фактически работать без библиотеки. Они действительно не понимают, как шейдеры подключаются к буферным объектам, как данные стекают по трубопроводу и т. Д.

Это полезная книга, более похожая на Redbook. Если все остальное не удастся, оно выполнит эту работу. Но я думаю, что это может быть лучше.

Кроме того, по мнению некоторых рецензентов, он, по-видимому, пропускает определенную полезную информацию, например, данные атрибутов упаковки, используя нормализованные значения и т. д.

Онлайн-материалы OpenGL

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

Учебники NeHe

Учебники NeHe , как утверждают другие, устарели extreme . Они сосредоточены на OpenGL с фиксированной функцией. Часто утверждается, что легко узнать фиксированную функцию GL, что верно. Но это не делает его хорошей идеей.

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

Разница в том, что вы можете выполнять работу с фиксированной функцией без понимания. Это поощряет программирование культа. Это позволяет получить что-то на экране, не зная, что он делает. На форумах OpenGL.org постоянно возникают вопросы о мелочах, связанных с фиксированной функцией, от людей, которые не знают, как работает gluLookAt, к трудностям с освещением, для людей, пытающихся получить определенный эффект для работы с текстурной средой.

Нет, я не думаю, что NeHe - хороший способ изучить OpenGL.

Вышеприведенный комментарий может быть использован для любого учебника, основанного не на шейдере, например Swiftless , < a href = "http://www.lighthouse3d.com/" rel = "noreferrer"> Маяк и т. д.

Программирование OpenGL Викиука

Wikibook OpenGL Programming , вероятно, является современным эквивалентом NeHe. Он охватывает GL версии 2.1, потому что они хотят удержать его в отношении мобильных платформ. Если это важно для вас, то обязательно посмотрите здесь.

Другая проблема с NeHe и, следовательно, этот Викиучебник, - это большой фокус на исходном коде. Коэффициент текста к коду очень мал; существует лот кода, но текст на самом деле не объясняет, как все это работает.

В качестве примера рассмотрим нижнюю часть учебника 2. Он представляет смешение. Он не говорит, как работает смешение. Он не говорит, что означает glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA). Он просто говорит: «Вот код, который делает вещи прозрачными».

Это не лучшая обучающая среда.

Неполные учебные пособия

Swiftless имеет набор обучающих программ OpenGL 4.x . У Durian Software также есть учебные пособия OpenGL на базе шейдеров . Также есть учебники «OpenGLBook.com» .

Все, что у всех есть, есть ... что они неполные и заброшенные. Все они получили около 4-5 учебных пособий, а затем были сброшены. Ни один из них не достиг текстурирования, освещения или чего-либо подобного. Ну, Durian ударил текстурирование, но не освещение.

Многое может быть видно из них, но многое также отсутствует.

Бесстыдное самосознание

Обзор моих собственных современных 3D-графических обучающих программ стал бы ужасным конфликтом интересов. Поэтому вместо этого я подробно расскажу об организации, стоящей за ними, и почему я думаю, что они хороши.

О, да, я работаю над учебником 17. Проект не мертв.

Первые три главы посвящены тому, как работает конвейер OpenGL. Superbible потерпел неудачу, потому что пытался скрыть подробности. Вместо этого я пытаюсь объяснить эти детали действительно, очень хорошо. Неоднократно. Введение объясняет трубопровод в виде обычного текста. Первый учебник объясняет это с помощью кодового сопровождения. И второй учебник посещает его еще больше.

Оттуда я, естественно, перехожу к позиционированию объектов. Это вводит униформы, но я не хотел одновременно застревать форму и перспективную проекцию. Поэтому я разделил две концепции. После проецирования глубина буферизации казалась разумным следующим шагом, а затем как преобразования и матрицы. После этого камеры. Поворот с кватернионами был поздним дополнением, но я чувствую, что было важно поговорить о начинающем графическом программисте.

Учебники по освещению снова строят один на другом. Диффузное, затем освещение на фрагмент, затем зеркальное. Динамический диапазон был интересным выбором. Большинство вводных материалов стараются держаться подальше от этого, но я обнимаю его. В наши дни вы не графический программист, если считаете, что интенсивность света всегда находится на диапазоне [0, 1]. И вы не графический программист в эти дни, если вы не знаете, как поддерживать линейный цветовой конвейер.

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

Импостеры представляли собой проблему, когда GS были полезны для решения. Кроме того, это позволило мне поговорить о других менее используемых вещах, таких как discard и изменении глубины фрагмента. И это действительно показывает силу шейдеров: вы можете превратить плоский квадрат в сферу.

Учебники по текстурированию также интересны. Одна из причин, по которой я откладывал разговоры о диффузных цветных текстурах, пока третий не должен был удержаться на разговорео структурах sRGB на некоторое время. Таким образом, я мог бы рассказать об основных проблемах вокруг текстур (загрузка данных, их включение в шейдеры, фильтрацию, зажим и т. Д.) Без необходимости решать линейные проблемы. Тогда я мог бы провести целую учебную программу только по этой теме. Это позволило мне действительно, действительно подчеркнуть, насколько важно поддерживать линейный цветовой конвейер.

Это один из моих питомцев.

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
21

Я бы посоветовал начать с этой серии уроков, они хороши и используют более современные функции, чем предыдущие http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
8

Моя единственная книга по OpenGL - «OpenGL SuperBible, 4-е издание», а пятая часть будет выпущена через несколько недель. Я думаю, что это хорошо для начинающих и продвинутых программистов.

Изменить: я могу добавить, что вы не идете по новейшим тенденциям в области технологий, если вы просто учитесь программировать. Скорее всего, вы станете экспертом, используя одну методологию, только 5 выпущенных новых интерфейсов /версий. Кажется, мы видели шейдеры вперед каждые 3 месяца. Поэтому выберите то, что имеет лучшую документацию (обычно примитивы), создайте несколько программ и постепенно продвигайтесь, потому что более вероятно, что в будущем вы столкнетесь с более старым кодом. Надеюсь, это поможет!

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
5

Как обычно, лучший способ учиться - это сделать это. Я бы потратил деньги на расходование денег, если вы не почувствуете, что вам действительно нравится иметь учебник для чтения, большинство (если не все) информация может быть найдена в Интернете. В дополнение к изучению OpenGL вы можете также освежить свою линейную алгебру, это никогда не повредит.

Большая проблема, с которой я столкнулся, - это много вещей, которые в недавней версии OpenGL были лишены.

Лучший ресурс, который я смог найти, был Блог Джо . Лучше всего представить современный конвейер и познакомить вас с некоторыми примерами более читаемым образом, чем то, что мне удалось найти в другом месте. Кажется, что Nehe недавно обновил пару, и, хотя их уроки еще старые, некоторые из новостей могут представлять интерес. Lazy Foo ' также был отличным ресурсом, но, как и в руководствах Nehe, использование лишенных материалов.

Я думаю, что после выходных или 2, как только вам станет удобно, уйдите и сделайте небольшой проект, чтобы применить все. Breakout или tetris - то, где вы можете сосредоточиться на самом коде. Вы учитесь намного больше, когда идете и пытаетесь сделать реальный проект, независимо от того, насколько просто.

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
4

Вот еще один. Это очень хорошо. Хотя у него есть только 4 главы.

http://openglbook.com/

Еще один, http://www.arcsynthesis.org/gltut/. Это огромный, медленный и высокий профиль.

Не забудьте проследить http://www.opengl.org/wiki/Getting_started

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
3

Лучший способ изучить OpenGL - использовать его. Я бы рекомендовал написать свой собственный движок. Это может показаться сложной задачей, и это так. Ваш первый движок будет не очень хорошим, но вы многое узнаете.

В принципе: напишите движок, используйте его для игры, выясните, что вам не нравится в этом и переписывайте. Продолжайте делать это, и вы улучшаетесь в OpenGL. :)

Что вам понадобится:

  • Способ загрузки моделей (.obj)
  • Способ загрузки текстур
  • Освещение, либо в конвейере фиксированной функции, либо в шейдере
  • Для любых немного более сложных сцен, чем чайник на экране, график сцены
  • Множество крошечных инструментов (класс 3d-векторов, класс кватернионов, класс камеры, менеджер сцены и т. д.).

Это уже много работы.

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
2

Я узнал об этом, написав «простую» игру: 3D-тетрис

Попробуйте создать свою собственную простую игру /приложение:

  • Астероиды
  • Pong
  • Простой боковой скроллер (вы можете научиться загружать в модели для игрока /врагов. У вас их нет? Используйте модели Quake)
  • трехмерный рельеф местности

Сделайте что-то простое , которое вас интересует!

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
2

Мы делаем OpenGL (ES) в нашей игре Orchard's Craps для iPhone, но это было обработано программистом с безумным 3D-навыком. Итак, из-за этого я изучаю OpenGL (ES), чтобы я знал, о чем говорю, и поэтому могу кодировать вместе с командой.

Один сайт, который я нашел полезным, с серией учебников, - это блог Джеффа ЛаМарче: http://iphonedevelopment.blogspot.com и вот ссылка на его сообщения OpenGL: http://iphonedevelopment.blogspot.com /2009/05/opengl-es-from-ground-up-table-of.html

И из OpenGL.org есть две полезные ссылки: http://www.opengl.org/code/ и http://www.opengl.org/resources/features/

Лучший способ, было сказано выше нескольких раз. Входите и делайте что-то маленькое, это интересно и прокладывайте себе путь. Все дело в понимании сцены, камеры и материалов (шейдеров). Как только вы поймете вокруг этих концепций, вы можете начать смотреть на физические двигатели, обнаружение столкновения, эффекты частиц и тому подобное. Woot! (^_^)

Удачи всем вашим усилиям, Кевин

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
2

Ну, никто не говорил о руководстве по программированию OpenGL , у меня нет этого в частности, но старые были довольно хорошими.

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
2

Я бы не сказал, что эта серия видеороликов - лучший способ, но это очень хорошо объяснено: www.71squared.com/2009/03/iphone-game-programming-tutorial-1

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
2

http://www.opengl-tutorial.org/

Имеются учебные пособия для «современного» OpenGL (ядро 3.0 /4.0, например, нет устаревшего материала (например, glBegin /glEnd)). Хотя в учебниках используются шейдеры, основы объясняются очень подробно, строя прочную математическую основу на этом пути. Текст хорошо округляется с помощью примеров кода и полезных визуализаций.

Промежуточные учебные пособия охватывают такие вещи, как, например, использование Quaternions или Lightmaps .

. * glm используется как математическая библиотека

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
1

Просто обратите внимание, что лучший способ изучить OpenGL - ориентированный на задачи . Попробуйте сделать что-то (например, добавьте функцию в свою игру), затем найдите то, что требуется для этого .

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

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
-1

Начните с NeHe, чтобы быстро получить свой первый треугольник на экране. Сделайте несколько обучающих программ для начинающих, чтобы понять основные концепции 3D-программирования. Если, как вы подразумеваете, отметив OpenGL ES, вы уже знаете основы 3D-программирования (для чего используются матрицы, для чего они используются, как используются разные матрицы для проектирования вершин на экране, какие вершины и т. Д.), то я предлагаю вам не тратить время на NeHe вообще, потому что это может замедлить вас (обучая вас тому, что вам нужно «отучить» позже).

Кроме того, я согласен с тем, что лучший способ научиться этому - это делать. Хорошим первым не-привет-мировым проектом может быть 2D-игра (или 2D-движок). Использование современных OpenGL для 2D-приложений может научить вас многим соответствующим концепциям (например, использовать буфер и шейдер), и это будет менее сложным, чем 3D-проект. Затем, после этого, вы можете применить то, что вы узнали при 3D-приложении.

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37
-4

Ну, мне снова и снова рассказывали, что урок не лучший, я думаю, они тоже подойдут вам! http://nehe.gamedev.net/ Я купил красную книгу ...

ответил EddieV223 15 J0000006Europe/Moscow 2011, 01:42:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132