Починаючи з OpenGL, коли більшість навчальних посібників застаріли [закрито]


16

Я впевнений, що вже є маса таких запитань, але постійне оновлення бібліотеки OpenGL відкидає їх усіх, і через місяць-другий відповіді тут знову будуть марними.

Я готовий розпочати програмування в OpenGL за допомогою C ++. У мене працює робочий компілятор (DevCpp; НЕ просите мене перейти на VC ++ і не питайте мене чому). Тепер я просто шукаю ґрунтовний підручник щодо програмування з OpenGL. Мій помічник знайшов підручник, наданий NeHe Productions, але, як я дізнався, це ШЛЯХ ДАТИ! (хоча я створив основне вікно для підтримки полотна OpenGL)

Потім я зайшов в Інтернет і знайшов OpenGL SuperBible, який, мабуть, використовує freeglut? Але те, що я хотів би знати, - це чи не оновлено вже 5-е видання SuperBible. Я запропонував розігнутись, сказав, що остання версія була 2.6.0, але зараз це 2.8.0!

  • Чи є OpenGL SuperBible все ще хорошим і досить сучасним місцем для початку?
  • Чи є краще місце для вивчення OpenGL?
  • Чи дозволено мені просто зберігати freeglut у каталозі DevCpp include (можливо, в GL), чи є якась важлива процедура?
  • Чи є коментарі чи пропозиції, яких я не думав запитувати, оскільки я тільки починаю?

@dreta очистив деякі речі для мене, тож тепер я маю краще уявлення про те, що запитати:

Я думаю, я хотів би почати з OpenGL, використовуючи обгорткову бібліотеку, а не безпосередньо звертаючись до OpenGL.
Я просто думаю, що для початківця мені було б легше програмувати і отримувати хороші результати, в той час як я ще не повинен розуміти всі похмурі деталі (як згадував @stephelton).

Проблема полягає в тому, що я не можу знайти жодної бібліотеки, яка б не мала визначених посилань на більше не підтримувані функції. Freeglut звучить оперативно, але він все ще використовує GLU.
Хтось знає, що я можу зробити?
Також я спробував скласти перше джерело SuperBible, але у мене виникли помилки, оскільки GLAPI не визначається як тип, помилка, що виникає в бібліотеці GLU.

Я хотів би використовувати SuperBible, але я не знаю, як це виправити.


2
Вам слід перейти на GCC.
нотлеш

DevCpp - це лише IDE; який запускає GCC (mingw, щоб бути конкретним). Але оскільки було зазначено, Eclipse CDT був би кращим, оскільки він не був покинутим програмним забезпеченням протягом останніх 10 років.
Каспер Бейер

4
@Casper Спадкоємцем спадщини DevCpp був Code :: Blocks і досі регулярно оновлюється.
Алекс Шепард

1
Якщо вам потрібна бібліотека обгортки навколо OpenGL, пропоную спробувати SFML . SFML забезпечує звичайні речі, такі як створення вікон, таймери тощо, а також дозволяє малювати текст та прості фігури. Ви можете кинутись на використання "сировинного" OpenGL, коли хочете, змішуючи SFML функції та необмежені виклики API.
Оскар Н.

1
Ви не можете "закрити" питання, додавши до заголовка "{CLOSED}". Питання будуть закриті модераторами або, якщо достатньо користувачів проголосували, щоб закрити це питання. Я поверну ваші зміни назад. "ЗАКРИТИ" автоматично додається до вашого заголовку, якщо модератори вирішать його закрити ..
bummzack

Відповіді:


19

Наш резидент Нікол Болас веде он-лайн книгу про сучасне графічне програмування . Він використовує сучасний OpenGL, все представлено в легкому споживанні темпом, це гарне місце для початку. Я використовую його для вивчення сучасного OpenGL, і він творить чудеса протягом останніх 2 місяців.

Крім того, тут і там є шматочки знань. Вікі OpenGL досить добре підтримується. Код не є «найкращою практикою», і іноді існує неоднозначність, коли мова йде про версію OpenGL, але поза цим рідкісним випадком це чудовий ресурс.

Якщо ви хочете дізнатися про GLSL, є основний посібник GLSL від маяка3D. Хоча це єдине основне знання, якому я б "довіряв" на сайті, решта, як правило, застаріла.

Як тільки ви почнете розуміти, як робиться сучасний OpenGL, вам буде зручно шукати конкретну інформацію, фільтрувати застарілий код і головне читати специфікацію. Ви просто повинні десь почати.

Більшість, якщо не всі насправді, доступних книг OpenGL є застарілими. Новий SuperBible - це якась виродка, і я б нікому його не рекомендував. Посібник з програмування OpenGL 4.1 для OpenGL 4.1 виходить 16 вересня, на жаль, 7-е видання використовує застарілий код, тому вам просто потрібно чекати, я впевнений, що це так.

І звичайно, тут завжди можна задавати питання.


1
Чому б ти не запропонував SuperBible?
Кодесміт

3
@AUTO 5-е видання SuperBible використовує власну обгортку навколо OpenGL, щоб зробити його "доступним". У багатьох прикладах надмірно використовується спеціальна обгортка. Це не вчить вас, на що він пропонується, що є основною специфікацією OpenGL. Як я бачу це, якщо вам явно не доведеться вивчати застарілий OpenGL, то просто забудьте, що він навіть існує. Немає сенсу цього вивчати. Основна специфікація набагато більш чітка і потужна.
дрета

@AUTO Основна специфікація набагато вимогливіша на початку, це добре. Це змусить вас піклуватися про більшість процесів візуалізації, надаючи повне розуміння та контроль над ним. Це відкриває багато, набагато більше можливостей, ніж застарілий код. Після цього, якщо ви можете вивчити API вашої ОС і запустити OpenGL під ним без таких речей, як перенасичення, то ви перебуваєте в країні чудес.
дрета

Гаразд, тому дозвольте поставити вам важливе запитання: бібліотека GLU здається застарілою і зовсім не підтримується; Використовуючи специфікацію, чи отримую я прямий доступ, минаючи потребу в ГЛУ? Так, що я не отримав би більше помилок у лінкері до неіснуючих функцій, на які посилається бібліотека GLU?
Кодесміт

@AUTO GLU абсолютно непотрібний, я лише коли-небудь торкався його 10-футовим полюсом під час уроку графічного програмування (нам довелося використовувати застарілий код, це було боляче, стандарти змінюються швидше, ніж програма уроків, я думаю). Це просто бібліотека, яка допомагає зі застарілим кодом. Якщо у вас встановлений код з GLU, він, ймовірно, смердить.
дрета

1

Минув час, коли це питання було задано, але я сподіваюся, що це допоможе людям, які мають те саме запитання, як і ви.

Я розпочав роботу з OpenGL, читаючи мінібук про arcsynthesis.org. Не впевнений, хто це написав. Схоже, реєстрація сайту закінчилася чи щось подібне, але ви можете знайти її тут: http://web.archive.org/web/20140209181347/http://www.arcsynthesis.org/gltut/ . Він використовує OpenGL 3.3, тому ви будете використовувати сучасний конвеєр та всі практики, які тягнуть за собою, але ви не будете піддаватися тесселяції чи обчислювальним шейдерам.

Ще один сайт, який варто переглянути, - https://open.gl/ . Здається, це ДУЖЕ зосереджено на початківцях і не охоплює речі майже так глибоко, як вищезгаданий матеріал, але це може стати гарною відправною точкою для людей, які тільки починають.

Не забудьте прочитати вікі OpenGL та google імена своїх функцій, якщо вам потрібна допомога. Деякі сторінки у вікі абсолютно марні, але інші є корисними як довідковою, так і навчальною матеріалами.


1
Людина, згадана у прийнятій відповіді, написала її Ніколь Болас - gamedev.stackexchange.com/users/8240/nicol-bolas
Джессі Дорсі

0

Ці старі підручники все ще дуже актуальні для початківців. Насправді я б запропонував почати там, а не з останніх версій OpenGL. Більш пізні версії відкинули деякі простіші методи малювання геометрії (а саме малювання в режимі прямого режиму).

З останніми версіями вам потрібно підготувати і надіслати масиви вершин і розповісти відеокарті про те, як розташовані вершини в наданому вами масиві. Ці речі громіздкі для налагодження.

Деякі версії (а саме OpenGL ES 2.x) вимагають надати власні рівняння освітлення (у вигляді фрагментів шейдерів) та трансформувати власні вершинні дані, щоб вони опинилися на екрані, де ви хочете (Vertex Shaders). Це ще важче налагодити, і для початківців немає місця (на мою думку).

Тому я б фактично запропонував вам повернутися до тих навчальних посібників NeHe (тощо) і почати там. Вони можуть бути "застарілими", але вони все ще працюють. Коли ви почнете розуміти, що насправді відбувається в конвеєрі візуалізації в OpenGL, і відчуєте деякі математичні поняття, завдяки яким ці речі працюють, тоді ви будете готові вивчити деякі більш сучасні методи візуалізація у OpenGL.


Насправді вони НЕ працюють. Тому я і розмістив це питання. Вони використовують функцію gluPersparency, яка застаріла, і немає абсолютної заміни.
Кодесміт

1
Це не функція OpenGL. Це окрема утиліта, яку надає інша бібліотека. Ви можете знайти код для нього легко - це не дуже складно.
Нотлеш

Дякую, але я знайшов лише недосконалий замінник, який не знаю як використовувати. Він приймає аргумент "float * matrix", тоді як старий використовує деяку внутрішню матрицю. Що я тоді поставив за це?
Кодесміт

Перше потрапляння в Google для "реалізації глюперспективи" - саме те, що ви шукаєте. він називає glFrustum, який недоступний у деяких останніх версіях OpenGL (ES 2.x не включає його). Навіть це не надто важко знайти імпульс.
нотлеш

0

Як говорили інші, більшість книг або застарілі, або занадто передові. Тим не менш, я б рекомендував 5-е видання SuperBible, але тільки для швидкого огляду того, що можна зробити в OpenGL, та ознайомитись з такими речами, як огляд / проекція тощо.

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

Я також хотів би додати сайт із хорошими підручниками, які я знайшов останнім часом http://ogldev.atspace.co.uk/


Дякую, я перевірю цей підручник; але для використання OpenGL SuperBible все ще залишається моє запитання: як виправити GLU, оскільки freeglut заснований на ньому?
Кодесміт

@AUTO: FreeGLUT не "базується" на GLU. Деякі функції FreeGLUT викликають GLU, але якщо ви не зателефонуєте до цих функцій, у вас не виникне проблеми.
Нікол Болас

Але хіба, мабуть, SuperBible викликає ці функції? І якщо це станеться, я не можу використовувати його .
Кодесміт

Дійсно, на мою думку, не турбуватися з вихідним кодом, наданим SuperBible. Прочитайте, але постарайтеся зробити все з нуля. Що стосується ваших проблем із GLU, я найкраще здогадуюсь, що ви неправильно налаштували / не встановили свої бібліотеки. Завантажте останню версію MinGW. Також завантажте останню версію freeglut і компілюйте її або знайдіть заздалегідь складену бібліотеку. У будь-якому випадку вам слід почати вивчати деякі речі, а не витрачати стільки часу на планування того, як почати.
Grieverheart

@AUTO: Чому, ймовірно, SuperBible викликає їх? Якби вони подзвонили їм, код SuperBible не працював. Ось чому їх не називає.
Нікол Болас

0

На жаль, arcsynthesis.org (сайт, згадуваний у прийнятій відповіді), на жаль, не працює і не працює. (EDIT: це доступно за цим посиланням !).

Підручники Антона Герделана для OpenGL 4 дуже читабельні та актуальні станом на середину 2014 року. Перші кілька безкоштовні, решта доступні на Amazon, де вони мають чудові відгуки, за невелику ціну. Поки що я був задоволений.

Є ще кілька безкоштовних навчальних посібників для OpenGL 3.3+ на веб- сайті http://www.opengl-tutorial.org/ . Вони датуються 2012 роком, але можуть бути хорошим додатковим матеріалом для інших джерел.


OGLDev є поточним, глибинним та вільним. ogldev.atspace.co.uk/index.html
Яттабайт


Приємно бачити, що це доступно! Я також перевірю ці матеріали.
iHateCamelCase
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.