Как OpenGL может работать на всех архитектурах и графических процессорах? - PullRequest
1 голос
/ 30 апреля 2019

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

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

Как OpenGL работает на разных процессорах и операционных системах? Насколько я знаю, такие языки, как c ++, должны быть перекомпилированы, если они хотят использоваться на процессоре ARM и т. Д. Разве это не относится к графическим процессорам вообще?

Если вы действительно можете создавать графику без OpenGL, кто-нибудь еще делает это? сколько работы и усилий экономит OpenGL в целом и насколько сложными являются системы, которые OpenGL облегчает для нас?

Существуют ли другие библиотеки, такие как OpenGL, которые обычно используются? если нет, появятся ли новые библиотеки и займут ли они свое место или они идеально подходят для работы и никуда не денутся?

1 Ответ

3 голосов
/ 30 апреля 2019

Как именно это работает и что это такое?

OpenGL определяет интерфейс, который вы, как программист, можете использовать для разработки графических программ (API). Интерфейс предоставляется вам в виде заголовочных файлов, которые вы включаете в свой проект. Он предназначен для мультиплатформенности, так что вы можете скомпилировать код, который использует OpenGL в разных операционных системах Люди, которые управляют спецификацией OpenGL, не предоставляют реализацию указанной функциональности. Это делается поставщиками ОС и оборудования.

Можно ли сделать компьютерную графику без OpenGL?

Да, конечно. Вы можете, например, вычислите все изображение вручную в вашей программе и затем вызовите некоторую специфическую для ОС функцию, чтобы вывести это изображение на экран (например, BitBlt в Windows).

Как OpenGL работает на разных процессорах и операционных системах?

Каждая ОС будет иметь свою собственную реализацию спецификации OpenGL, которая обычно вызывает драйверы оборудования. Допустим, у вас есть машина с ОС Windows и видеокартой Nvidia. Если вы запустите программу, которая вызывает glDrawElements, она будет выглядеть так:

your_program calls glDrawElements
   which calls glDrawElements implementation written by people from Microsoft
       which calls Nvidia drivers written by people from Nvidia
           which operates the HW

Если вы действительно можете создавать графику без OpenGL, кто-нибудь еще делает это?

Да, конечно. Некоторые люди могут захотеть реализовать свой собственный движок рендеринга с нуля (хотя это действительно сложная вещь).

Существуют ли другие библиотеки, такие как OpenGL, которые обычно используются? если нет, появятся ли новые библиотеки и займут ли они свое место или они идеально подходят для работы и никуда не денутся?

Конечно. Существует DirectX , поддерживаемый Microsoft и предназначенный только для платформ Windows, и Vulkan , который можно рассматривать как преемник OpenGL .

...