Основная проблема, тем не менее, заключается в том, что из большинства моих исследований я обнаружил, что такие замечательные библиотеки, как SDL (за исключением 1.3 - что, я не считаю стабильным? Я могу ошибаться в этом) поддерживает только до OpenGL 3, а не 4.2.FreeGlut, тем не менее, поддерживает новейшие и лучшие версии и кажется хорошим способом освоить основы движка.
В вашем исследовании не хватает.
Во-первых, FreeGLUT должен никогда использоваться для всего, что вы бы назвали "движком".Что бы вы ни подразумевали под этим, FreeGLUT не является инструментом для работы.Он предназначен для создания демонстраций, поэтому он владеет основным циклом.Я понимаю, что у FreeGLUT есть способ дать вам некоторый контроль над основным циклом, но стандартный способ использования FreeGLUT этого не делает.
Во-вторых, вы правы, что SDL 1.2 не способен создаватьбазовый контекст OpenGL 3.2+ .Однако вам не нужно создавать основной контекст для использования GL 3.2+;контексты совместимости прекрасно работают в этих версиях.Единственная платформа, которая не имеет контекста совместимости, - это поддержка MacOSX 3.2.Так что я бы не волновался об этом.
Вы можете попробовать GLFW .Это похоже на FreeGLUT, только больше ориентированное на игру.Это дает вам контроль над циклом рендеринга и так далее.Он обеспечивает лучшую обработку ввода, чем FreeGLUT, а также некоторые легкие функции загрузки изображений (только файлы TGA).У него даже есть API потоков (хотя я бы не советовал использовать эти функции. GLFW 2.0 удалит их, поскольку и в C ++ 11, и в C11 есть собственные API потоков).
Однако в нем нет систем.для аудио.
Я тоже слышал о SFML, но в конечном итоге я хотел бы придерживаться библиотек, написанных на C, так как я планирую написать библиотеку C, чтобы заботиться о большинстве примитивов.рендеринг (ради чисто скорости и управления памятью, процедурно).
Я собираюсь игнорировать заблуждение, что C ++ не имеет «чистого управления скоростью и памятью»;это распространенный слух, который я проигнорирую.Важным моментом является то, что SFML, с точки зрения кода рендеринга, существует исключительно для создания и управления окном.Ваш код рендеринга даже не должен говорить с ним.Вы вызываете некоторые функции SFML, создаете пару объектов SFML, и ваш код OpenGL "библиотеки C" даже не должен знать, что эти объекты C ++ есть.
Однако, если вы абсолютно не можете работать в C ++,все, вы всегда можете использовать Allegro версии 5 .Он имеет C API и обеспечивает поддержку основных контекстов OpenGL, ввода, аудио и большей части того, что делает SFML.Он также имеет довольно приличную документацию и является модульным (хотя и отличается от SFML).