Graficzne interfejsy API wysokiego i niskiego poziomu: różnice i sposób ich działania

Graficzne interfejsy API nie są sprzętem, ale oprogramowaniem, ale są niezbędne do renderowania grafiki, która jest prezentowana na naszym ekranie, a bez nich komunikacji między aplikacjami a GPU nie byłoby możliwe. W tym artykule w przystępny sposób wyjaśniamy, czym są graficzne API oraz obalamy związane z nimi mity.

Należy wziąć pod uwagę, że układy GPU nie wykonują programów, ale wykonują listę instrukcji. Ale skąd pochodzi ta lista i jak trafia do GPU?

Graficzne interfejsy API wysokiego i niskiego poziomu: różnice

Co to jest Graphics API?

Maszyna OpenGL

Graficzne interfejsy API umożliwiają aplikacjom komunikację z GPU w celu zaznaczenia, w jaki sposób ma narysować następną klatkę lub jej część. Koncepcja opiera się na abstrakcji, która polega na stworzeniu w języku programowania tego, czym jest GPU. Aby zrozumieć pojęcie abstrakcji, założymy, że zamiast GPU mamy podłączoną maszynę sodową.

API automatu odświeżającego byłoby biblioteką z następującymi funkcjami: rzucanie monetą, zwracanie zmiany, wybieranie odświeżenia i dostarczanie odświeżenia, w taki sposób, aby program mógł współdziałać, ta część API jest wywoływana przez Front-End, a to, co z nią robimy, to lista instrukcji, cóż, w GPU ta lista nazywa się DisplayList lub lista ekranów.

Bufor pierścieniowy DisplayList

Wspomniana lista ekranów jest odczytywana przez oprogramowanie, które jest niczym innym jak sterownikiem karty graficznej, przekształca to listę w mikrokod, który GPU może zrozumieć i kopiuje ją do części RAM pamięć, do której GPU zawsze ma dostęp. Aby przeczytać listę ekranów, skopiuj listę do wewnętrznej pamięci procesorów poleceń i rozpocznij renderowanie sceny lub jej części za pomocą instrukcji z listy ekranów.

Ten proces jest wykonywany w sposób ciągły w każdej klatce renderowanej przez GPU i wysyłanej na ekran, niezależnie od tego, czy używasz komputera do gier, smartfona czy konsoli do gier wideo.

Jakie są obecnie graficzne interfejsy API?

Grafiki API

Najczęściej używane obecnie graficzne interfejsy API to:

  • Wulkan: Zastępuje OpenGL, jest używany we wszystkich typach systemów operacyjnych, o których mówi się, że są niezależne od platformy, ale jest to główny interfejs API Google.
  • Metal: Graficzny interfejs API firmy Apple, używany w systemie macOS i specjalnie zoptymalizowany pod kątem architektury GPU.
  • DirectX: Microsoft API dla Windows i Xbox został podzielony na kilka wersji w zależności od platformy, ale ostatnio ujednolicili go w jednej wersji.
  • GNM / GNMX / GNM++: Graficzne API konsol Sony PlayStation 4 i PlayStation 5, GNMX to interfejs API wysokiego poziomu, GNM to API wersji niskiego poziomu na PS4 i GNM ++ na PS5.
  • NVN: Interfejs API grafiki Nintendo Switch, który jest używany wyłącznie w tej serii konsol.
  • OpenGL: Interfejs API, od którego wszystko się zaczęło, pierwotnie znany jako IrisGL i przeznaczony dla stacji roboczych Silicon Graphics, ewoluował, aby stać się interfejsem API dla komputerów PC, konsol, a później smartfonów. Dochodzę do wersji 4, czyli Vulkan, rebranding OpenGL 5.

Komputery a grafika

DX11 vs DX12

Procesory GPU to bardzo złożone procesory, które już dawno przestały być zwykłymi zabawkami do renderowania gier wideo, a dziś są używane w dziedzinach takich jak sztuczna inteligencja lub wysokowydajne obliczenia, co doprowadziło do ewolucji graficznych interfejsów API i wykracza poza grafikę.

Obecnie aplikacje nie wysyłają pojedynczej listy, ale kilka list, z których jedna to grafika, a reszta obliczeniowa, gdzie GPU służy do rozwiązywania konkretnych problemów, które nie mają nic wspólnego z renderowaniem grafiki, ta ostatnia działa całkowicie asynchronicznie i dlatego nie zależy od listy ekranów.

Na przykład może się zdarzyć, że aplikacja do projektowania graficznego wykorzystuje moc GPU do rozwiązania specjalnego efektu na zdjęciu, tylko dlatego, że GPU jest lepiej przygotowany do rozwiązania tego problemu niż CPU. Dzięki listom obliczeń możesz to zrobić, korzystając z wolnych zasobów GPU, aby rozwiązać te małe problemy

Graficzne interfejsy API wysokiego i niskiego poziomu: czym się różnią?

API Gráficas Alto Bajo

Kiedy mówimy o API niskiego poziomu, mamy na myśli API, które działa blisko GPU, które znajduje się na dole stosu, podczas gdy sterownik znajduje się na górze, dlatego API wysokiego poziomu wymaga sterownika generującego wyświetlacz lista. Ponieważ niektóre zadania sterownika nie są wykonywane w wysokopoziomowym API, teoretycznie uzyskuje się to, że czas wykonywania listy ekranów przez procesor jest krótszy, co oznacza ukończenie klatki w mniej milisekund lub poświęcenie więcej czasu na poprawę grafiki ta sama rama.

W rzeczywistości nieprawdą jest, że niskopoziomowe API nie mają sterownika, ponieważ można go czytać i słuchać w niektórych miejscach, ale jest to znacznie prostsze i obciąża pracę podczas wykonywania pewnych podstawowych zadań w aplikacji, pozwoli to programistom na zoptymalizować taktowanie każdej klatki tak bardzo, jak to możliwe, kontrolując proces tworzenia listy ekranów.

Jednak często deweloperom korzystanie z wysokopoziomowego API może być znacznie wygodniejsze ze względu na to, że dodatkowy czas na rozwój nie jest tego finansowo tego wart lub po prostu dlatego, że korzyści, jakie można uzyskać dostosowując grę do API niski poziom jest niewyczuwalny.

Mit konsoli i komputera

Istnieje mit, że ponieważ konsola ma unikalny sprzęt, oznacza to, że interfejsy API są znacznie bardziej zoptymalizowane niż na komputerze, na którym jest wiele różnych konfiguracji, ale tak naprawdę to sterownik, który zainstalowaliśmy, generuje listę ekranów. Różnica polega na tym, że w konsolach ten sterownik jest statyczny i nie otrzymuje aktualizacji wydajności ani zmian w całym komercyjnym życiu konsoli.