Что нужно знать перед изучением opengl
Перейти к содержимому

Что нужно знать перед изучением opengl

  • автор:

Народ,с чего стоит начать практику после изучения OpenGL и GLSL?

С недавних пор изучаю изучаю OpenGL по книге Red Book,а затем планирую и glsl освоить.Что бы вы посоветовали написать в качестве начала практики? Пока познакомился с 2д,3д,освещением,работой с цветом,цветовым наложением и антиалиасингом.Что нужно ещё знать в будущем для создания рендер движка под игру? Ибо я вкурсах про то,что мне понадобится ещё изучить и кватернионы для вращения камеры персонажа.

#1
1:21, 11 июля 2021

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

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

#2
1:42, 11 июля 2021

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

  • std::variant
  • Постоялец

#3
2:05, 11 июля 2021

EnderGames
> Что нужно ещё знать в будущем для создания рендер движка под игру?
На мой взгляд, если ты не написал ни одной 2D игрушки, самой примитивной,
то за создание рендер движка браться не стоит. 🙂
Напиши свою Змейку, Сапёр, Пятнашки, Линии, Тетрис и т.д. Какой-нибудь примитивный платформер.
Разберись со спрайтами и тайлами, а уж потом приступай к управлению персонажами.
Ну и не зная шаблонов проектирования, едва ли что-то вообще сможешь написать.

#4
3:37, 11 июля 2021

EnderGames
> Что нужно ещё знать в будущем для создания рендер движка под игру?

Нужно чувствовать вес каждой строчки кода по времени выполнения и уметь преждевременно оптимизировать код.

#5
3:38, 11 июля 2021

EnderGames
Возьми Unity и учись там писать шейдеры и изучать базовые принципы линейной алгебры, самопальный движок путь в никуда

#6
4:19, 11 июля 2021

EnderGames
> Что нужно ещё знать в будущем для создания рендер движка под игру?
Знать ничего не надо — все узнаешь и выучишь по ходу написания движка. Что гораздо важнее — надо иметь очень большое желание это делать и кайфовать от процесса, иначе перегоришь и забросишь, как это поисходит в 99.9% случаях (поэтому тебе и пишут что ничего не выйдет). Если не чувствуешь фанатизма, а хочешь быстрого результата — лучше сразу бери Юнити или Анрил.
Все сложнее на несколько порядков чем ты думаешь, узнавать придется гораздо больше чем ты думаешь и займет гораздо больше времени чем ты думаешь — лет пять минимум при удачном раскладе. Готов к такому?

  • EnderGames
  • Пользователь

#7
6:22, 11 июля 2021

У меня а арсенале только плюсы,а в готовые движки не полезу.Хочется самопальный движок в виде того самого API склепать,либо на самом опенгл,openal,bullet игру склепать.

#8
6:46, 11 июля 2021

если есть желание значит так тому и быть.

  • EnderGames
  • Пользователь

#9
10:20, 11 июля 2021

ИПавлов
Хочу после освоения всего нужного первым деом написать рендер простой сцены из blender с освещением и возможностью по ней перемещаться,ну и может добавлю тот самый туман для разнообразия ещё.

#10
10:49, 11 июля 2021

EnderGames
> Хочу после освоения всего нужного первым деом написать рендер простой сцены из
> blender с освещением и возможностью по ней перемещаться
Да, сделай когда-нибудь с сыном, когда сын будет.

#11
11:44, 11 июля 2021

ну давай для начала полностью сцену из руководства доделаешь. обычно вконце создаётся куб с текстурой и с управлением клавой и мышью ты летаешь по сцене. как сделаешь это уже там будет видно что сложно, а что нет.

#12
13:50, 11 июля 2021

EnderGames, ну возьми книжку, по OpenGL на русском. Там даже были те, что движки самодельные описывают. Как самому написать Квейк.
И вперёд, тренируйся.

А вообще, пройди уроки NeHe. И полезно и позновательно.

#13
15:00, 11 июля 2021

EnderGames
После OpenGL Bible ты уже должен смочь взять GPU Gems и уже кодить вещи оттуда.

  • EnderGames
  • Пользователь

#14
15:20, 11 июля 2021

Mirrel
OpenGL Red Book сейчас у меня.

Как изучать OpenGL 4.6+? [закрыт]

Закрыт. На этот вопрос невозможно дать объективный ответ. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.

Закрыт 3 года назад .

Где его изучать? Я нашел немного книг по OpenGL 3.0+ C++ . Но она же устарела. Есть ли книги (желательно на русском) по OpenGL 4.6 C++ ? Ну или максимально актуальные. Или же есть другой вариант изучения?

Отслеживать
13.8k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков
задан 1 апр 2020 в 18:46
1,128 2 2 золотых знака 8 8 серебряных знаков 32 32 бронзовых знака
opennet.ru/opennews/art.shtml?num=46952 вот все чем версия 4.6 отличается от 4.5
– user206435
1 апр 2020 в 18:56
математика очень нужна, если хочется продвинутся дальше рисования кубов/моделек
1 апр 2020 в 18:58

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Я нашел немного книг по OpenGL 3.0+ C++. Но она же устарела.

Я бы не парился на этот счет.

В GL 4 в основном добавили разные продвинутые фичи, которые первое время вам все равно не пригодятся. (А когда они понадобятся, о них можно отдельно почитать.)

К тому же, на некоторых древних видеокартах/видеодрайверах GL 4 не работает, так что у 3 переносимость выше.

Возможно, есть смысл вообще начать с GL 2. (Он намного проще, чем 3/4. В третьей версии выбросили старый «простой» способ рисования, и оставили только рисование с помощью шейдеров.)

Есть ли книги (желательно на русском)

Есть отличный сайт, но он на английском: https://learnopengl.com/ Из-за гнусного РКН может не открыться без прокси. Уже открывается.

Там рассказывается про совеременный (3,4) OpenGL. Про 2 не подскажу.

И да, знания математики насколько нужны?

Нужна линейная алгебра (векторы, матрицы, . ), особенно для GL 3/4. В туториале по ссылке основы объясняются.

Unick-soft

Статья будет интересна тем, кто ещё не начал или начал недавно изучать OpenGL. В статье сделана попытка указать правильный путь изучения OpenGL, на какие вещи стоит обратить внимание, а на какие не стоит, так как они уже устарели, какие знания необходимо иметь, чтобы не возникли трудности. Статья не содержит справок по функциям или информацию по настройке среды разработки, но в конце статьи вы можете найти полезные ссылки.

Что такое OpenGL

OpenGL — кросс-платформенная библиотека для 2D и 3D графики. В настоящее время используется для разработки приложений для Mac OS X, iOS, Android, Linux, конкурирует с DirectX для Windows. OpenGL используют не только для разработки игр, но и для приложений, работающих с 3D-графикой: СAD-системы, 3D редакторы, обучающие ПО, медицинские системы.

Свою популярность библиотека получила не только из-за кросс-платформенности, но и из-за возможности использования в проектах на различных языках программирования. И самое главное, OpenGL поддерживается производителями видеокарт, благодаря чему библиотека получает аппаратное ускорение видеокарт. Когда я только начинал работать с OpenGL, у меня возник вопрос: Как установить OpenGL? Где взять дистрибутив? Ответ прост: OpenGL устанавливается вместе с драйверами видеокарты, так как и список расширений и различные константы разнятся в зависимости от видеокарты (правда, Windows может иметь встроенный OpenGL старой версии без поддержки аппаратного обеспечения).

Для использования OpenGL, конечно, необходимо иметь библиотеку для линковки (gl.lib, glu.lib) и заголовочный файлы. Они входят в Visual Studio, но и их не трудно найти в Интернете.

Какие именно возможности вам предоставит OpenGL?

OpenGL предоставляет средства для рендера 3D сцены. OpenGL также позволяет гибко настраивать отрисовку. OpenGL поддерживает аппаратное ускорение, так как большинство команд выполняется на видеокарте.

Какими знаниями необходимо обладать?

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

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

Позиционирование объектов — серьёзный вопрос, связанный с 3D сценами. Объекты позиционируются с помощью аффинных преобразований: перемещение, вращение и увеличение размера. С математической точки зрения эти преобразования записываются соответствующими матрицами. Если вы плохо разбираетесь в этом, то обязательно почитайте специализированную литературу, посвященную данному вопросу.

С чего начать?

Начать изучение я бы посоветовал с хорошей книги, при этом постоянно практикуясь. На русском языке не так много хороших книг, так как большинство из них уже устарели. Я бы посоветовал следующую книгу: «OpenGL. Руководство по программированию». При начальном обучении книга может показаться довольно сложной. Параллельно с ней можно изучать статьи с примерами http://nehe.gamedev.net (перевод статей на русский http://pmg.org.ru/nehe).

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

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

Об устаревших и современных методах и расширениях

Стоит отметить, что OpenGL уже развивается на протяжении 10 лет. В течение этого времени многие функции успели устареть, а новые появлялись. Доступ к большинству современных функций производится через расширения, то есть вам необходимо запросить указатель на функции (wglGetProcAddress).

Когда вы начнёте читать книгу, то обнаружите, что в первых примерах объекты (треугольники или квадраты) вы будете строить по точкам с помощью функции glVertex*, первое освещение вы будете включать, используя glLight, задавать цвет материала функцией glMaterialf. Многие из них не используются в современных проектах. Например, вершины объектов не задаются по одной, а передаются все вместе с помощью Vertex Buffer Object (VBO). Это намного быстрее, так как вершины необходимо передать на видеокарту и намного быстрее передать все сразу, чем по одной. Стандартное освещение тоже не используется, все реализуется в шейдерах. Другими словами, объекты всегда отрисовываются с помощью шейдеров. В шейдеры передаются все необходимые параметры: освещение, материалы, матрицы. И когда вы освоите азы, вам необходимо переключаться на изучение шейдеров (GLSL).

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

На будущее

Когда вы освоите OpenGL вас могут заинтересовать вопросы работы видеокарты, эффективная реализация тех или иных эффектов. Для этого могу вам порекомендовать:

Что нужно знать перед изучением opengl

МЕРОПРИЯТИЯ

VK justtech

Комментарии

Популярные По порядку
Не удалось загрузить комментарии.

ВАКАНСИИ

Middle / Senior C++ Разработчик
Москва, до 350000 RUB

Программист PHP
от 180000 RUB до 350000 RUB

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

13 лучших книг по Python для начинающих и продолжающих

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

Книги по программированию: как читать и что именно

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

6 книг по Java для программистов любого уровня

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *