Итак ... в настоящее время у нас есть OpenGL 4.2, который, как я где-то читал, требует аппаратного обеспечения dx11 (что это значит?) И набора «боковых» библиотек, например, для создания окна.
*Аппаратное обеспечение 1003 *
DX11 - это ... аппаратное обеспечение, которое имеет надпись "поддерживает DirectX 11", написанную на боковой стороне коробки.Я не уверен, что вы спрашиваете здесь;Вам неясно, что такое Direct3D, что такое D3D 11 или что отличает D3D 11 от предыдущих версий?
К вашему сведению: D3D - это альтернатива только Windows для использования OpenGL для доступа к оборудованию рендеринга.Версия 11 является самой последней версией API.И D3D11 добавляет несколько новых вещей по сравнению с D3D10, но ничего особенного, что понадобится новичку.
OpenGL - это спецификация, которая описывает определенный интерфейс для графических операций.То, как этот интерфейс создан , не является частью OpenGL.Поэтому каждая платформа имеет свой собственный способ создания контекста OpenGL.Windows использует Win32 API с WGL.X-Windows использует X-Windows API с функциями GLX.И т. Д.
Библиотеки, такие как GLUT, GLFW и т. Д., Являются библиотеками, которые резюмируют все эти различия.Они создают и управляют окном OpenGL для вас, чтобы вам не пришлось испачкать свой код деталями платформы.Вам не нужно использовать какие-либо из них.
Конечно, если вы заинтересованы в изучении OpenGL , лучше избегать таких специфических для платформы мелочей, как, например, заботиться оHWND и тому подобное.
И у нас также есть GLEW, утилита загрузки расширений ... подождите ... разве GLUT / GLFW уже не расширение?Есть ли какая-либо причина использовать его, например, есть ли действительно важные расширения, чтобы заинтересоваться?
Это еще одно недоразумение.GLUT - это библиотека , а не расширение.Расширение OpenGL является частью OpenGL .Видите ли, OpenGL - это просто спецификация, документ.Реализация OpenGL, которую вы используете в настоящее время, реализует графическую систему OpenGL, но она также может реализовать ряд расширений для этой графической системы.
GLUT не является частью OpenGL;это просто библиотека.Задача GLUT - создавать и управлять окном OpenGL.GLEW также является библиотекой, которая используется для загрузки функций OpenGL .Это не единственная альтернатива, но она популярна.
До сих пор у нас есть создание окон (и некоторые утилиты), но ... OGL не заботится ни о загрузке текстур, ни о 3Dмоделей.Сколько еще библиотек мне нужно?
OpenGL - не игровой движок.Это графическая система, предназначенная для взаимодействия с выделенным графическим оборудованием.Эта работа не имеет ничего общего с такими вещами, как загрузка чего-либо из любого файла.Да, для создания игры это необходимо, но, как уже говорилось ранее, OpenGL не является игровым движком.
Если вам нужно загрузить формат файла, чтобы выполнить то, что вы хотите, то вам нужно будет либо написать кодвыполнить загрузку (и настройку формата, необходимую для взаимодействия с GL) или загрузить библиотеку, которая сделает это за вас.OpenGL Wiki содержит довольно хороший список инструментов для различных задач .
Существует (в) известное руководство NeHe.Написан на C с использованием WinApi, с чрезвычайно неясным кодом и устаревшими решениями, но все еще остается самым популярным.Можно найти некоторые вещи, такие как Красная книга, которые относятся к версиям, таким как 2.x или 3.x, однако есть только несколько (и незаконченных) учебников, в которых упоминается 4.x.
С чем идти?
Вики OpenGL содержит список онлайн-материалов для изучения OpenGL , как старой школы, так и более современной.
ВНИМАНИЕ: Бесстыдная самообманАкция продолжается!
Мои учебники по обучению графике довольно хороши, со многими разделами и все еще активно работают над ними. Он не учит каких-либо специфических для OpenGL 4.x функциональных возможностей, но OpenGL 3.3 полностью совместим с 4.2. Все эти программы будут отлично работать на 4.x оборудовании.
Я также поддерживаю неофициальный SDK для OpenGL. Это набор полезных утилит, предназначенных для сборки простой унифицированной системой сборки. Это также достаточно хорошо задокументировано.