В чем разница между графическим движком ANGLE и Skia?

#graphics #gpu #skia #angle-graphics

Вопрос:

ANGLE это кроссплатформенный уровень абстракции графического движка, разработанный Google. Команда ANGLE описала его как портативный OpenGL. API в основном предназначен для обеспечения высокопроизводительной совместимости OpenGL с компьютерами Windows и веб-браузерами, такими как Chromium/Google Chrome, путем перевода вызовов OpenGL в Direct3D, который имеет гораздо лучшую поддержку драйверов.

Skia Graphics Engine это графическая библиотека, написанная на C , которая абстрагируется от специфичного для платформы графического API.

Оба они являются уровнем абстракции, разработанным Google для поддержки OpenGL, и оба они используются в Google Chrome.

В чем именно разница между тем и другим?

Ответ №1:

Сначала немного контекста.

OpenGL-это API для программирования видеокарт. Вызовы API для OpenGL преобразуются в команды для видеокарты на компьютере драйвером поставщика графического процессора (обычно Nvidia, AMD или Intel).

(другие API для программирования графических процессоров-Direct3D в Windows, Metal в macOS, Vulkan и т. Д.)

Эти API-интерфейсы являются несколько «низкоуровневыми» в том смысле, что они дают вызовы для указания графическому процессору, что делать на уровне необработанной «геометрии»/»пикселей»; в этих API-интерфейсах нет ничего похожего на «нарисуйте прямоугольник здесь» или «нарисуйте это изображение там».

Веб-браузеры, такие как Chrome, предоставляют API WebGL для страниц HTML5. WebGL-это в основном API OpenGL ES 2.0.

ANGLE-это библиотека, которая преобразует API OpenGL ES 2.0 в один из API GPU: вы выполняете вызовы OpenGL ES 2, а ANGLE преобразуется в эквивалентные вызовы в настольном OpenGL, или в Direct3D в Windows, или в Metal на macOS.

Это дает вам последовательную реализацию OpenGL ES 2.0, которую Chrome хочет использовать в Интернете. (Это очень полезно, потому что реализации Windows OpenGL отличаются от поставщика к поставщику, и macOS давно перестала обновлять свою реализацию OpenGL в версии 4.1).

Skia-это API более высокого уровня, который позволяет вам «нарисовать прямоугольник здесь» и «нарисовать это изображение там» и многое другое (рисовать текст; рисовать контуры; рисовать кривые и т. Д.). Это обычный API высокого уровня, который вы получите на языках более высокого уровня и в API веб-холста.

Для реализации этих вызовов Skia преобразует команды рисования в API более низкого уровня, такие как GL, Metal и т. Д. Одним из API-интерфейсов, на которые может ориентироваться Skia, является ANGLE, чтобы чертежи Skia получали согласованный вывод на разных платформах.