Подтвердить что ты не робот

Почему связаны SDL и OpenGL?

Я возился с SDL и узнал, что вы не можете поворачивать изображения с помощью SDL. Повсюду задавался вопрос, люди говорили использовать OpenGL для вращения. Я всегда думал, что SDL полностью отделен от OpenGL, я ошибаюсь, думая об этом? Я даже нашел учебники по использованию OpenGL в SDL, что еще больше смутило меня. Что такое отношения между SDL и OpenGL? Почему бы просто не использовать OpenGL, если он более мощный и позволяет вам делать больше (это от того, что я читал)?

4b9b3361

Ответ 1

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

OpenGL - стандартная спецификация, определяющая кросс-язык, кросс-платформенный API для написания приложений, которые создают 2D и 3D-компьютерную графику. Интерфейс состоит из более чем 250 различных вызовов функций, которые можно использовать для создания сложных трехмерных сцен из простых примитивов. OpenGL был разработан Silicon Graphics Inc. (SGI) в 1992 году [4] и широко используется в САПР, виртуальной реальности, научной визуализации, визуализации информации и моделировании полета. Он также используется в видеоиграх, где он конкурирует с Direct3D на платформах Microsoft Windows (см. OpenGL и Direct3D).

Ответ 2

SDL - это слой выше OpenGL; на самом деле он использует GDI по Windows по умолчанию, а также имеет бэкэнд DirectX. Вероятно, люди говорят, что вы можете использовать OpenGL, чтобы обойти ограничения SDL на платформах, которые по умолчанию используют OpenGL (гм, Linux), потому что абстракция более высокого уровня не раскрывает эту функциональность. Однако тогда ваш код "менее" переносится на Windows (или, по крайней мере, на Windows с использованием GDI-сервера).

Кроме того, SDL делает много других вещей помимо графики - аудио, вход и т.д., что OpenGL не делает.

Ответ 3

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

Однако ничто (помимо причины) не позволяет вам использовать пакет SDL_gfx, который имеет модуль SDL_rotozoom, ответственный за поворот и масштабирование растровых изображений.

Ответ 4

SDL обрабатывает ввод, создание окна, загрузку изображений и некоторые другие функции, которые OpenGL не обрабатывает.

Ответ 5

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

Ответ 6

Как заявили многие. SDL обрабатывает не только рендеринг. Помимо обработки звука, ввода и всех других приятных вещей, он упрощает использование графики, предоставляя вам доступ ко многим функциям, которые вам нужно реализовать самостоятельно в противном случае.
Таким образом, ys, SDL является уровнем абстракции над OpenGL. Вы все еще можете получить доступ к OpenGL в своем приложении и, следовательно, использовать его в полной мере.
Простое дополнение, поскольку вы, кажется, новичок в этом API: если вам нужен API, который похож на SDL (для 2D-графики), я могу порекомендовать взглянуть на SFML. На основе С++ вместо C есть функции для таких вещей, как вращение. Он также основан на OpenGL.:)

Привет,
Skalli