API đồ họa cấp cao và cấp thấp: Sự khác biệt và cách chúng hoạt động

Các API đồ họa không phải là một phần cứng mà là một phần mềm, nhưng nó rất cần thiết cho việc hiển thị đồ họa được hiển thị trên màn hình của chúng ta và nếu không có chúng thì giao tiếp giữa các ứng dụng và GPU sẽ không thể. Trong bài viết này, chúng tôi giải thích một cách dễ hiểu về API đồ họa là gì và chúng tôi phá vỡ một số lầm tưởng liên quan đến chúng.

Cần phải lưu ý rằng GPU không thực thi các chương trình, nhưng chúng thực thi một danh sách các lệnh. Nhưng, danh sách này đến từ đâu và làm thế nào để nó đến được GPU?

API đồ họa cấp cao và cấp thấp: Sự khác biệt

API đồ họa là gì?

Máy OpenGL

Các API đồ họa là thứ cho phép các ứng dụng giao tiếp với GPU để đánh dấu cách nó phải vẽ khung tiếp theo hoặc một phần của nó. Khái niệm này dựa trên sự trừu tượng là sự sáng tạo trong ngôn ngữ lập trình về GPU là gì, để hiểu khái niệm trừu tượng, chúng ta sẽ giả sử rằng thay vì GPU, chúng ta có một máy pha nước ngọt được kết nối.

API của máy làm mới sẽ là một thư viện với các chức năng sau: tung đồng xu, trả lại tiền lẻ, chọn giải pháp làm mới và cung cấp Làm mới, theo cách mà chương trình có thể tương tác, phần này của API được gọi bởi Front-End, và những gì chúng tôi làm với nó là danh sách các hướng dẫn, trong GPU, danh sách này được gọi là DisplayList hoặc danh sách màn hình.

Bộ đệm vòng DisplayList

Danh sách màn hình đã nói được đọc bởi phần mềm không phải là trình điều khiển cạc đồ họa, điều này biến danh sách thành một mã vi mô mà GPU có thể hiểu và sao chép nó vào một phần của RAM bộ nhớ mà GPU luôn truy cập. Để đọc danh sách màn hình, hãy sao chép danh sách vào bộ nhớ trong của bộ xử lý lệnh của bạn và bắt đầu hiển thị cảnh hoặc phần đó bằng các hướng dẫn từ danh sách màn hình.

Quá trình này được thực hiện liên tục trong từng khung hình mà GPU hiển thị và gửi đến màn hình, bất kể bạn đang sử dụng PC chơi game, điện thoại thông minh hay máy chơi game.

Các API đồ họa ngày nay là gì?

Đồ họa API

Các API đồ họa được sử dụng nhiều nhất hiện nay là:

  • Vulcan: Thay thế OpenGL, nó được sử dụng trong tất cả các loại hệ điều hành, được cho là bất khả tri nền tảng, nhưng nó là API chính của Google.
  • Kim loại: API đồ họa của Apple, được sử dụng trong macOS và được tối ưu hóa đặc biệt cho kiến ​​trúc GPU của nó.
  • DirectX: API của Microsoft dành cho Windows và Xbox, được chia thành nhiều phiên bản tùy thuộc vào nền tảng, nhưng gần đây họ đã thống nhất nó thành một phiên bản duy nhất.
  • GNM/GNMX/GNM++: API đồ họa cho bảng điều khiển PlayStation 4 và PlayStation 5 của SONY, GNMX là API cấp cao, GNM là API phiên bản cấp thấp trên PS4 và GNM ++ trên PS5.
  • NVN: API đồ họa Nintendo Switch, được sử dụng độc quyền trong loạt bảng điều khiển này.
  • OpenGL: API bắt đầu tất cả, ban đầu được gọi là IrisGL và được thiết kế cho các máy trạm Silicon Graphics, đã phát triển để trở thành API cho PC, bảng điều khiển và điện thoại thông minh sau này. Tôi đạt đến phiên bản 4 là Vulkan đổi tên thương hiệu của OpenGL 5.

Máy tính so với Đồ họa

DX11 so với DX12

GPU là những bộ xử lý có độ phức tạp cao, từ lâu đã không còn là đồ chơi đơn thuần để kết xuất các trò chơi điện tử, ngày nay chúng được sử dụng trong các lĩnh vực như trí tuệ nhân tạo hoặc máy tính hiệu suất cao, điều này đã dẫn đến sự phát triển của API đồ họa và vượt ra ngoài đồ họa.

Hiện tại, các ứng dụng không gửi một danh sách mà là một số danh sách, một trong số đó là đồ họa và phần còn lại của điện toán, nơi GPU được sử dụng để giải quyết các vấn đề cụ thể không liên quan gì đến việc hiển thị đồ họa, thứ sau hoạt động hoàn toàn không đồng bộ và do đó không phụ thuộc vào danh sách màn hình.

Ví dụ: có thể một ứng dụng thiết kế đồ họa sử dụng sức mạnh của GPU để giải quyết hiệu ứng đặc biệt trên một bức ảnh, chỉ vì GPU được trang bị tốt hơn để giải quyết vấn đề đó so với CPU. Nhờ các danh sách tính toán, bạn có thể thực hiện bằng cách sử dụng các tài nguyên miễn phí của GPU để giải quyết những vấn đề nhỏ đó

API đồ họa cấp cao và cấp thấp: chúng khác nhau như thế nào?

API Gráficas Alto Bajo

Khi chúng ta nói về API cấp thấp, chúng ta đề cập đến một API chạy gần với GPU, nằm ở cuối ngăn xếp trong khi trình điều khiển ở trên cùng, do đó, API cấp cao là API yêu cầu trình điều khiển tạo màn hình danh sách. Vì một số tác vụ trình điều khiển nhất định không được thực thi trong API cấp cao, điều đạt được về mặt lý thuyết là thời gian CPU thực thi danh sách màn hình ngắn hơn, điều này có nghĩa là hoàn thành khung hình trong ít hơn mili giây hoặc có thêm thời gian để cải thiện đồ họa của cùng khung đó.

Trên thực tế, việc các API cấp thấp thiếu trình điều khiển là sai vì nó có thể được đọc và nghe ở một số nơi, nhưng điều này đơn giản hơn nhiều và tạo gánh nặng cho công việc khi thực hiện một số tác vụ thiết yếu đối với ứng dụng, điều này sẽ cho phép các nhà phát triển tối ưu hóa thời gian của mỗi khung hình nhiều nhất có thể bằng cách kiểm soát quá trình tạo danh sách màn hình.

Tuy nhiên, nhiều khi đối với các nhà phát triển, có thể thoải mái hơn nhiều khi sử dụng API cấp cao, do thời gian phát triển bổ sung không xứng đáng về mặt tài chính hoặc đơn giản là vì lợi ích có thể đạt được thông qua việc điều chỉnh trò chơi thành API mức thấp là không thể nhận thấy.

Huyền thoại về console và PC

Có một lầm tưởng rằng vì bảng điều khiển có một phần cứng duy nhất, điều đó có nghĩa là các API được tối ưu hóa hơn nhiều so với trên PC, nơi có nhiều cấu hình khác nhau, nhưng nó thực sự là trình điều khiển mà chúng tôi đã cài đặt tạo ra danh sách màn hình. Sự khác biệt là trong bảng điều khiển, trình điều khiển này là tĩnh và không nhận được cập nhật hiệu suất hoặc thay đổi trong toàn bộ vòng đời thương mại của bảng điều khiển.