Ano ang Apple Metal API. Ang mga NVIDIA GPU ay handa na para sa Vulkan API

Ang mga API (Application Programming Interface) ay nagbibigay sa mga developer ng hardware at software ng mga paraan upang lumikha ng mga driver at program na tumatakbo nang mas mabilis sa iba't ibang mga platform. Ang mga driver ng software ay idinisenyo upang direktang makipag-ugnayan sa API, sa halip na sa operating system at software.

Kasalukuyang mayroong dalawang graphics API - OpenGL (SGI) at Direct 3D (Microsoft).

Bagama't sinusuportahan ng mga tagagawa ng video adapter ang pamantayan ng OpenGL, kumpanya ng Microsoft nagbibigay ng Direct3D na suporta para sa isang mas komprehensibong API na tinatawag na DirectX.

Ang DirectX 9 at mas mataas ay ang pinakabagong mga bersyon ng interface ng software, na nagpapalawak ng suporta para sa 3D graphics at nagbibigay ng mga pinahusay na kakayahan sa paglalaro. Para sa karagdagang impormasyon tungkol sa DirectX o upang i-download ang pinakabagong bersyon, bisitahin ang DirectX Web site ng Microsoft: www.microsoft.com/directx.

CrossFire o sli

Bilang tugon sa pag-unlad at pag-promote ng lumang-bagong teknolohiya ng SLI (MK No. 30(357) 2005) ng NVIDIA, ang pangunahing katunggali sa merkado ng video accelerator, ATI, ay bumuo at nagpatupad ng sarili nitong katulad na solusyon - teknolohiyang CrossFire. Tulad ng SLI mula sa NVIDIA, pinapayagan ka nitong pagsamahin ang mga mapagkukunan ng dalawang video card sa isang computer sa bawat isa, na nagpapataas ng pagganap ng subsystem ng video. Ang teknolohiya ng CrossFire ay pangunahing naiiba sa SLI at, nang naaayon, ay may maliit na pagkakatulad sa katunggali nito. Ang pagbibigay ng kagustuhan sa ilang mga pakinabang ng isang teknolohiya o iba pa, sa malapit na hinaharap ang mga gumagamit ay pipili sa pagitan ng NVIDIA at ATI hindi lamang batay sa mga opinyon tungkol sa mga tatak na nabuo sa paglipas ng mga taon, ngunit batay din sa mga katotohanan tungkol sa mga teknolohiya ng SLI o CrossFire.

Batayang teknikal

Sa pamamagitan ng pagkakatulad sa NVIDIA, upang maglagay ng dalawang ATI video card sa isang "harness" kakailanganin mo ang isang motherboard na may chipset mula sa parehong tagagawa (ang Intel i975X chipset ay pinlano din na suportahan ang CrossFire), na may dalawang Mga puwang ng PCI Express. Tulad ng SLI, hinihingi ng CrossFire ang mga mapagkukunan ng system, na mangangailangan ng mataas na kalidad na supply ng kuryente. Tingnan natin ang mga kinakailangan ng system nang mas detalyado.

Motherboard. Ang ina ay dapat na batay sa chipset ATI Radeon Xpress 200 CrossFire. Ang mga board na ito ay magagamit para sa parehong AMD Sempron/Athlon 64 at Intel Pentium 4/Celeron processors. Kaya't kikita na ngayon ang ATI sa mga chipset, na ang produksyon nito ay hindi pa umabot sa malaking sukat.

Mga video card. Para gumana ang teknolohiya, kailangan mo ng CrossFire master card (higit pa dito sa ibaba) at anumang iba pang video card batay sa isang chip mula sa parehong pamilya bilang host card. Ang nakikilala sa master card mula sa iba ay ang pagkakaroon ng isang DMS-59 connector (nakakonekta sa DVI sa slave card), isang CrossFire chip, at, siyempre, gastos.

Power unit. Upang mapanatili ang ganoong seryosong hanay, kakailanganin mo ng power supply na may pinakamababang kapangyarihan na 400–450 W, mas mabuti ang isang mas malakas.

Well, iyon lang ang kailangan mo upang mag-ipon ng isang video system CrossFire. Tulad ng napansin mo, ang ATI ay mas nababaluktot sa mga customer nito, hindi tinatali sila tulad ng lupa sa isang kolektibong sakahan sa ipinag-uutos na pagbili ng dalawang card na may parehong chip mula sa parehong tagagawa. Ang pagbubuklod ay isinasagawa lamang sa pamilya ng video chip kung saan nakabatay ang accelerator. Iyon ay, maaari kang bumili ng nangungunang Radeon X800 video accelerator at isang alipin na Radeon X800 XL. Magiging tugma ang Master Radeon X800 sa mga card mula sa anumang tagagawa batay sa anumang pagbabago ng X800 chip. Ito ay isang ganap na kalamangan sa isang katunggali - kung kukuha ka ng isang accelerator, na may pag-asam ng karagdagang modernisasyon sa pamamagitan ng pag-install ng isa pang video card, hindi mo na kailangang magsaliksik para sa isang card mula sa isang partikular na tagagawa batay sa isang partikular na chip. Naka-on sa ngayon Ang teknolohiya ng CrossFire ay sinusuportahan ng mga video card batay sa X800 at X850, pati na rin ng mga bagong produkto batay sa X1xxx.

ay higit pa mataas na antas compression kaysa sa mga larawang may mababang nilalaman ng mga naturang elemento (halimbawa, mga graph, diagram, simpleng texture). Ang mga larawang may mataas na resolution ay maaaring i-compress sa isang mataas na ratio ng compression nang hindi naaapektuhan ang kanilang kalidad. Para makatipid mataas na kalidad Para sa mga larawang may mababang resolution, dapat na mas mababa ang huling ratio ng compression. Ang mga larawang may mataas na lalim ng kulay (gaya ng mga 24-bit na Truecolor na imahe) ay mas mahusay na na-compress kaysa sa mga larawang may mas kaunting bits bawat pixel (gaya ng 8-bit na grayscale).

Karamihan sa iba pang lossy compression na paraan ay simetriko sa kalikasan. Nangangahulugan ito na ang mga ito ay batay sa paggamit ng isang partikular na pagkakasunud-sunod ng mga operasyon, na ginagawa sa reverse order kapag nag-unpack. Ang pag-compress at pag-decompress ng data ay tumatagal ng humigit-kumulang sa parehong tagal ng oras. Ang Fractal compression ay isang prosesong walang simetriko; Ito ay sumusunod na ang fractal compressed data ay kapaki-pakinabang sa mga kaso kung saan ang mga file ng imahe ay madalas na na-decompress ngunit hindi na-compress, halimbawa, kapag nag-iimbak ng mga larawan sa mga graphics database sa CD-ROM.

Ang ilan sa mga pinakakaraniwang anyo ay maikling tinalakay sa ibaba:

Mga modernong GUI API

Pag-unlad ng modernong kumplikado mga programa sa graphics, lalo na ang mga 3D na application, ay hindi mapaghihiwalay na nauugnay sa gamit ang API-mga interface

(Application Programming Interface).

Ang API ay isang hanay ng mga aklatan na kumakatawan sa isang yari na interface para gumana ang programa sa mga 3D accelerators. Sa kasalukuyan, katulad sa-

Mayroong napakaraming mga interface, ngunit lahat sila ay maaaring nahahati sa dalawang klase: pangkalahatan at dalubhasa.

Ang mga Universal API ay karaniwan sa lahat ng 3D accelerators, at suporta pagpapabilis ng hardware para sa mga API na ito ay responsibilidad ng mga accelerator mismo. Una sa lahat, dapat nating i-highlight ang Microsoft DirectX at OpenGL. Parehong ginagamit pangunahin sa mga programa ng animation sa computer.

Ang mga espesyal na API ay idinisenyo upang gumana sa mga graphics accelerator na binuo sa mga partikular na 3D chipset; ang pinakasikat sa kanila ay ang Glide API - isang interface para sa pagtatrabaho sa VooDoo® chips - para sa Savage3D chips, atbp. Gumagana lamang ang mga program na isinulat gamit ang mga espesyal na API sa mga accelerator kung saan ginawa ang mga API na ito. Karamihan sa mga dalubhasang API ay nagbibigay lamang ng mababang antas na interface ng programming, ngunit kani-kanina lang, bago Mga bersyon ng DirectX isama ang mataas na antas ng mga interface ng suporta tulad ng DirectX para sa VisualBasic, na nagbibigay ng suporta sa wika para sa mga multimedia application na nakasulat sa VisualBasic na kapaligiran Visual programming Basic.

Microsoft DirectX API

Ang Microsoft DirectX API ay isang hanay ng mga interface ng programming na ginagamit upang malutas iba't ibang gawain: mula sa kontrol ng programa computer hardware bago ang pag-unlad mga aplikasyong multimedia gamit ang iba't ibang uri ng impormasyon, at paglikha ng mga virtual na mundo.

Ang pangunahing layunin na hinabol ng Microsoft noong lumilikha ng interface ng DirectX ay upang paandarin ang mga computer na tumatakbo Mga sistema ng Windows, sa isang unibersal na platform para sa mga application na mayaman sa mga elemento ng multimedia: full-color na graphics, mga fragment ng video,

tami, 3D animation at stereo sound. Direktang binuo sa OS kernel Windows interface Ang DirectX ay isang pinagsamang serbisyo

Windows 98 at Windows 2000 at Microsoft Internet Explorer. Mga bahagi

Ang DirectX ay maaari ding awtomatikong ma-download sa iyong computer kapag nag-i-install ng mga modernong laro at multimedia application na binuo para sa Windows 95. Para sa mga developer, ang DirectX ay nagbibigay ng isang hanay ng mga interface ng software, ang paggamit nito ay nagbibigay-daan sa iyo upang malutas ang dalawang pangunahing problema.

Una, ginagawa ng DirectX ang mga application na binuo kasama nito sa mga program na tugma sa anumang bersyon ng Windows at tumatakbo sa anumang computer na naka-install ang operating system na ito, anuman ang uri ng computer na ginamit. software. Kasabay nito katulad na mga aplikasyon sulitin ang mga teknikal na kakayahan computer, pagbibigay pinakamataas na pagganap. Ito ay nakakamit sa pamamagitan ng serbisyong ibinigay ng dalawang pangunahing Mga bahagi ng DirectX: mababang antas na mga interface na bahagi ng DirectX Foundation, at mataas na antas na mga interface na bumubuo sa DirectX Media.

Pangalawa, binibigyan ng DirectX ang mga developer ng kakayahang mag-abstract tiyak na uri display adapter, sound card o 3D accelerator at tumuon sa logic ng program mismo.

Ang DirectX Foundation ay nagbibigay sa mga developer ng isang set ng mababang antas na mga interface ng programming na nagbibigay mahusay na pag-access sa lahat ng mga kakayahan ng isang computer na nagpapatakbo ng OS Windows, na ipinatupad sa antas hardware- Mga 3D accelerators, sound card, mga kagamitang pang-input ng impormasyon. Bago ang pagdating ng DirectX, ang mga developer na lumilikha ng mga multimedia application para sa Windows platform ay kailangang i-configure ang kanilang mga programa upang gumana sa iba't ibang uri ng mga device at configuration. Ang isyung ito ay nalutas na ngayon. Ang DirectX Foundation ay naglalaman ng isang bahagi na kilala bilang Hardware Abstraction Layer (HAL), na gumagamit ng software

mga driver upang matiyak ang pakikipag-ugnayan sa pagitan ng software at hardware. Bilang resulta, ang mga developer ay maaaring lumikha ng isang bersyon ng isang application gamit ang DirectX interface nang hindi kinakailangang mag-alala tungkol sa pagtiyak na ito ay tumatakbo sa mga partikular na configuration ng hardware. Awtomatikong nakikita ng DirectX ang mga teknikal na kakayahan ng iyong computer at nagtatakda ng mga naaangkop na parameter. Pinapayagan ka rin ng DirectX na magpatakbo ng mga multimedia application na nangangailangan ng suporta sa hardware na hindi available sa computer na ito. Sa kasong ito, ang mga ito ay ginagaya sa software ng isang bahagi na tinatawag na Hardware Emulation Layer (HEL) at nagbibigay ng mga driver ng software na nagsisilbing mga nawawalang device.

Ang DirectX Media ay nakaupo sa tuktok ng DirectX Foundation at nagbibigay ng mataas na antas ng mga serbisyo - suporta sa animation, streaming output (ang kakayahang magpadala at tingnan ang audio at video na impormasyon habang ito ay dina-download mula sa Internet) at interaktibidad. Ang awtomatikong pagsasama ng mga serbisyong mababa ang antas na ibinibigay ng DirectX Foundation at ang mga serbisyong mataas na antas na ibinibigay ng DirectX Media ay nagpapasimple sa proseso ng paglikha at paglalaro ng mga elemento ng multimedia, na nagpapahintulot sa mga developer na isama ang mga ito sa kanilang mga aplikasyon at mga Web page, sa gayon ay nagbibigay ng interactive na nilalamang multimedia na hindi available dati. Bilang karagdagan, ang DirectX Media ay tumutulong sa paglutas ng problema ng koordinasyon iba't ibang uri mga multimedia effect, na ginagawang mas madaling i-synchronize ang kanilang pag-playback. Bilang karagdagan sa dalawang pangunahing bahagi na ito, kasama rin sa Microsoft DirectX ang mga high-level na bahagi na nagbibigay ng multimedia functionality para sa mga Web application. Kabilang dito ang: NetMeeting - isang tool para sa pag-aayos ng mga online na talakayan ng grupo at Windows Media Player - isang tool para sa pagpapadala ng nilalamang multimedia sa Internet. Isaalang-alang natin sa madaling sabi ang mga pangunahing bahagi

Mga bahagi ng DirectX Foundation. Kabilang dito ang Microsoft DirectDraw, Direct3D(Immediate at Retained mode), DirectInput, DirectMusic, DirectSound,

DirectSound 3D at DirectPlay. Ang mga interface ng programming sa antas ng system na ito

magbigay ng epektibong pag-access sa iba't ibang mga kagamitan sa kompyuter at magbigay ng tunay na pagsasarili ng hardware ng mga application, inaalis ang mga problema sa pag-install ng driver at hindi pagkakatugma ng mga platform ng hardware at software.

Ang Microsoft Direct3D ay isang interface para sa pagtatrabaho sa mga 3D video card. Ang arkitektura ng Direct3D ay ipinapakita sa Figure 1.5.

Win32 application

Sinusuportahan ng Direct3D ang dalawang operating mode - Immediate Mode at Retained Mode. Sa Immediate Mode, ang Direct3D ay nagbibigay sa mga developer ng suporta sa hardware para sa gaming at mga multimedia application sa kapaligiran Microsoft Windows. Binibigyang-daan ka nitong makamit ang kalayaan ng hardware, sumusuporta sa switchable Z-buffering at Intel MMX processor architecture. Sa mode na ito, direktang ipinapatupad ang mga pangunahing graphics primitive, nang hindi gumagamit ng mga buffer ng execution.

Pinapadali ng Retained Mode ang paggawa at pag-animate ng mga 3D na mundo sa pamamagitan ng pagsuporta sa dalawang bagong feature: mga animation interpolator na may color blending, makinis na paggalaw ng bagay, at maramihang. iba't ibang uri pagbabagong-anyo, pati na rin ang sunud-sunod na pagpuno ng 3D mesh na istraktura

mga bagay (meshes), na nagpapahintulot sa kanilang unti-unting pag-load mula sa mga malalayong server. Nagbibigay-daan ito sa mga developer na epektibong gumamit ng 3D graphics nang hindi kinakailangang direktang manipulahin ang mga istruktura ng bagay sa mababang antas.

Dapat tandaan na ang mga Direct3D application ay nakikipag-usap sa mga graphics device sa parehong paraan, anuman ang mode. Maaari o hindi sila gumamit ng software emulation bago i-access ang HAL. Sa katotohanan, ang Direct3D ay malapit na isinama sa bahagi ng DirectDraw, kaya sa Figure 1.2 ang layer ng abstraction ng hardware na HAL ay itinalagang DirectDraw/Direct3D HAL. Ang Direct3D Z-buffer at nagre-render ng mga surface, habang direktang ipinapakita ng DirectDraw ang mga ito. Ang Direct3D COM interface ay isang interface sa DirectDraw.

Ang DirectDraw ay isang memory management manager na nagbibigay pangunahing hanay mga function para sa mga graphic at multimedia application na tumatakbo Windows platform. Hindi tulad ng tradisyonal na Windows graphics, ang DirectDraw ay gumagamit ng direktang access upang ipakita ang memorya at mga graphics device, habang tinitiyak ang buong compatibility sa mga Windows application.

Ipinapakita ng Figure 1.6 ang pakikipag-ugnayan sa pagitan ng DirectDraw, ang operating system kernel component na GDI (Graphics Device Interface), ang Hardware Abstraction Layer (HAL), at ang hardware emulation layer

(Hardware Emulation Layer, HEL). Tulad ng nakikita mo, ang DirectDraw ay umiiral nang nakapag-iisa

mo mula sa GDI at ang parehong mga interface ay may kakayahang direktang ma-access ang mga graphics device sa pamamagitan ng hardware-independent na mga layer. Hindi tulad ng GDI, ang DirectDraw ay hindi gumagamit ng mga tampok ng hardware. Kung hindi sinusuportahan ng isang partikular na device ang kinakailangang functionality, sinusubukan ng DirectDraw na tularan ito gamit ang HEL. Sinusuportahan ng DirectDraw ang isang malawak na hanay ng mga display adapter - mula sa mga simpleng monitor hanggang sa mga kumplikado propesyonal na mga aparato. Nagtatrabaho sa antas ng mga graphic surface, nagsisilbi ang DirectDraw

batayan para sa mataas na antas mga graphic function at mga interface at nagbibigay-daan sa iyong gamitin ang alinman sa mga kakayahan ng hardware na ibinigay ng mga device o tularan ang mga ito kung kinakailangan.

Win32 application

tion Layer (HEL)

Abstraction Layer

Video card

Figure 1.6 – Pagsasama ng DirectDraw sa system

Ang DirectInput ay isang interface sa iba't ibang mga aparato input ng impormasyon - keyboard, mouse, joystick, pati na rin ang mga device na may force-feedback. Kumpara sa maginoo, karaniwang mga tampok interface na ito sumusuporta sa higit pang mga device at nagbibigay ng mas mabilis na pagtugon sa mga kahilingan. Sa pamamagitan ng direktang pagtatrabaho sa mga driver ng device, hindi ginagamit ng DirectInput ang Microsoft Windows messaging system.

Kasama sa mga bagong feature ng DirectInput ang pinalawak na listahan ng mga sinusuportahang device, kabilang ang: mga game pad, aircraft

mga pamatok sa paglipad, mga helmet virtual reality(virtual-reality na headgear)

At mga device na may feedback, na nagbibigay ng mga epekto tulad ng vibration, paglaban sa paggalaw, atbp., na ang paggamit nito ay ginagawang mas makatotohanan ang mga modernong laro.

Ang DirectMusic ay isang bagong miyembro ng pamilya Mga teknolohiya ng DirectX, na isang software shell para sa paglikha ng mga template ng musika at mga tagubilin para sa pagtugon sa mga aksyon ng user. Nagbibigay-daan ito sa mga developer na lumikha background music sa real time batay sa mga algorithm na tinukoy sa mga Web page o multimedia application. Nagbibigay ang DirectMusic ng buong pagpapatupad ng pamantayan ng DownLoadable Sounds (DLS), na nagpapahintulot sa mga developer na lumikha ng mga template ng musika na puwedeng i-play sa halos anumang hardware platform. Kasama sa DirectMusic ang DirectMusic Producer - isang pinagsama-samang editor na nagbibigay-daan sa iyong magtrabaho sa lahat ng object ng DirectMusic: mga estilo, template, mga tool sa DLS, atbp.

Ang DirectPlay ay isang mataas na antas na interface ng programming sa pagitan programa ng aplikasyon at mga serbisyo sa komunikasyon, na pinapasimple ang komunikasyon sa pamamagitan ng modem o lokal na network. Kasama sa DirectPlay ang isang hanay ng mga utility na nagpapahintulot sa mga manlalaro na makahanap ng mga kasosyo at Web site, suportahan ang daloy ng impormasyon sa pagitan ng mga server, at ang parehong hanay ng mga function ay sinusuportahan para sa sinumang gumagamit ng application, anuman ang uri online na serbisyo o mga protocol.

SA Bilang karagdagan sa mababang antas na mga interface ng DirectX Foundation, ang DirectX ay may kasamang mas mataas na antas na hanay ng mga interface ng programming

at mga bahagi ng DirectX Media, na nagbibigay ng suporta para sa mga aplikasyong multimedia, animation at output ng impormasyon sa streaming. Ang DirectX Media ay kasalukuyang binubuo ng mga sumusunod na pangunahing interface ng programming:

DirectShow (tinatawag dati ActiveMovieSDK); DirectAnimation (tinatawag dati ActiveX Animation); Pagbabago ng DirectX. Tandaan na ang mga serbisyo ng DirectX Media ay gumagamit ng mga serbisyo ng DirectX Foundation.

, mga function, istruktura at constant na ibinibigay ng isang application (library, serbisyo) o operating system para magamit sa panlabas mga produkto ng software. Ginagamit ng mga programmer kapag nagsusulat ng lahat ng uri ng application.

Encyclopedic YouTube

  • 1 / 5

    Tinutukoy ng API ang functionality na ibinibigay ng program (module, library), habang pinapayagan ka ng API na i-abstract mula sa kung paano eksaktong ipinatupad ang functionality na ito.

    Kung ang isang program (module, library) ay itinuturing bilang isang itim na kahon, ang API ay isang hanay ng mga "handle" na available sa user ng kahon na ito at na kaya niyang pilipitin at hilahin.

    Ang mga bahagi ng software ay nakikipag-ugnayan sa isa't isa sa pamamagitan ng mga API. Sa kasong ito, ang mga bahagi ay karaniwang bumubuo ng isang hierarchy - ang mga high-level na bahagi ay gumagamit ng API ng mga mababang antas na bahagi, at sila naman, ay gumagamit ng API ng kahit na mas mababang antas ng mga bahagi.

    Ang mga protocol ng paglilipat ng data sa Internet ay binuo sa prinsipyong ito. Ang karaniwang protocol stack (modelo ng OSI network) ay naglalaman ng 7 layer (mula sa pisikal na antas pagpasa ng mga bit sa layer ng application protocol tulad ng HTTP at IMAP). Ginagamit ng bawat layer ang functionality ng nakaraang layer ng paglilipat ng data ("mas mababa") at, sa turn, ay nagbibigay ng kinakailangang functionality sa susunod na ("mas mataas") na antas.

    Mahalagang tandaan na ang konsepto ng isang protocol ay malapit sa kahulugan sa konsepto ng isang API. Parehong mga abstraction ng pag-andar, tanging sa unang kaso ay pinag-uusapan natin ang tungkol sa paglipat ng data, at sa pangalawa ay pinag-uusapan natin ang pakikipag-ugnayan ng mga application.

    Ang function at class library API ay may kasamang paglalarawan mga lagda At semantika ng mga function.

    Lagda ng function

    Minsan sila ay nakikilala pirma ng tawag At lagda ng pagpapatupad mga function. Ang isang signature ng tawag ay karaniwang pinagsama-sama mula sa syntactic na istraktura ng isang function na tawag, na isinasaalang-alang ang lagda ng saklaw ng ibinigay na function, ang pangalan ng function, ang pagkakasunud-sunod ng mga aktwal na uri ng mga argumento sa tawag, at ang uri ng resulta. Karaniwang kasama sa lagda ng pagpapatupad ang ilang elemento mula sa syntactic na istraktura ng deklarasyon ng function: isang specifier ng saklaw ng function, pangalan nito, at isang pagkakasunud-sunod ng mga pormal na uri ng argumento.

    Halimbawa, sa C++ programming language simpleng function ay natatanging kinikilala ng compiler sa pamamagitan ng pangalan nito at ang pagkakasunud-sunod ng mga uri ng mga argumento nito, na bumubuo sa lagda ng function sa wikang ito. Kung ang isang function ay isang paraan ng isang partikular na klase, ang pangalan ng klase ay isasama rin sa lagda.

    Sa industriya ng software, mahalaga ang karaniwan, karaniwang mga API para sa karaniwang pag-andar dahil tinitiyak ng mga ito na ang lahat ng program na gumagamit ng karaniwang API ay pantay na gaganap o kahit man lang, sa karaniwang pamilyar na paraan. Sa kaso ng mga GUI API, nangangahulugan ito na ang mga programa ay magkakaroon ng katulad user interface, na nagpapadali sa proseso ng pag-master ng mga bagong produkto ng software.

    Sa kabilang banda, ang mga pagkakaiba sa mga API ng iba't ibang operating system ay nagpapahirap sa pag-port ng mga application sa pagitan ng mga platform. meron iba't ibang pamamaraan pag-bypass sa pagiging kumplikadong ito - pagsulat ng "intermediate" na mga API (mga API ng mga graphical na interface wxWidgets, GTK, atbp.), pagsulat ng mga library na nagpapakita mga tawag sa system isang OS sa mga tawag sa system ng isa pang OS (mga kapaligiran ng pagpapatupad tulad ng Wine, cygwin, atbp.), ang pagpapakilala ng mga pamantayan ng coding sa mga programming language (halimbawa, karaniwang aklatan C language), pagsulat ng mga interpretasyong wika na ipinatupad sa iba't ibang mga platform (python, perl, php, tcl, Java, atbp.).

    Dapat ding tandaan na ang programmer ay madalas na may maraming iba't ibang mga API na magagamit niya upang makamit ang parehong resulta. Bukod dito, ang bawat API ay karaniwang ipinapatupad gamit ang mga bahagi ng software ng API ng isang mas mababang antas ng abstraction.

    Halimbawa: para makita ang linyang “Hello, world!” sa browser. ", kailangan mo lang gumawa ng HTML na dokumento na may kaunting pamagat at simpleng katawan na naglalaman linyang ito. Kapag binuksan ng browser ang dokumentong ito, ipapasa ng browser program ang pangalan ng file (o isang nakabukas na descriptor ng file) sa library na nagpoproseso ng mga dokumentong HTML, na, naman, ay Tulong sa API Babasahin ng operating system ang file na ito at mauunawaan ang istraktura nito, pagkatapos ay sunud-sunod na tumawag, sa pamamagitan ng API ng mga karaniwang graphic primitives, mga operasyon tulad ng "i-clear ang window", "isulat ang "Hello, world!" Habang ginagawa ang mga operasyong ito, makikipag-ugnayan ang graphics primitives library sa window interface library na may naaangkop na mga kahilingan, at tatawagan ng library na ito ang operating system API upang magsulat ng data sa buffer ng video card.

    Bukod dito, sa halos bawat antas ay may ilang posibleng alternatibong API. Halimbawa: maaari naming isulat ang pinagmulang dokumento hindi sa HTML, ngunit sa LaTeX, at maaari naming gamitin ang anumang browser para sa pagpapakita. Iba't ibang mga browser, sa pangkalahatan, gumamit ng iba't ibang mga library ng HTML, at, bilang karagdagan, ang lahat ng ito ay maaaring i-compile gamit ang iba't ibang primitive na mga aklatan at sa iba't ibang mga operating system.

    Ang mga pangunahing paghihirap ng umiiral multi-level na mga sistema Ang mga API ay ganito:

    • Kahirapan sa porting code ng programa mula sa isa Mga sistema ng API sa isa pa (halimbawa, kapag binabago ang OS);
    • Pagkawala ng functionality kapag lumilipat mula sa isang mas mababang antas patungo sa isang mas mataas. Sa halos pagsasalita, ang bawat "layer" ng API ay nilikha upang mapadali ang pagpapatupad ng ilan karaniwang hanay mga operasyon. Ngunit sa parehong oras, ito ay nagiging talagang mahirap o nagiging pangunahing imposible na magsagawa ng ilang iba pang mga operasyon na ibinibigay ng higit pa. mababang antas API.

    Pinaka sikat na API

    Mga operating system

    Ilang taon na ang nakalilipas, ipinakilala ng Apple ang isang bagong graphics API - Metal. Ang pagkakaiba nito sa parehong Scene Kit ay hindi ito isang mataas na antas ng API na tumatakbo sa ibabaw ng OpenGL ES (mobile Mga bersyon ng OpenGL), ngunit isang mababang antas na API para sa pag-render at pag-compute na maaaring palitan ang OpenGL. Sa pamamagitan ng ayon kay Apple, Ang Metal ay isang pagkakasunod-sunod ng magnitude na mas mabilis kaysa sa OpenGL ES (gayunpaman, sa katunayan, gumuhit lamang ng mga tawag at paglilipat ng data sa GPU ay 10 beses na mas mabilis). Available ang API na ito para sa lahat ng device na tumatakbo sa A7 processor at mas bago, pati na rin sa mga Mac simula 2012.

    Paano gumagana ang mga graphics API

    Una sa lahat, ano ang isang API? Ito ay kumakatawan sa Application Programming Interface, application programming interface. nagsasalita sa simpleng wika- Ito handa na code, na ginagawang mas madali ang buhay para sa isang programmer kapag nagsusulat ng mga programa. Sa katunayan, ito ay isang uri ng semi-tapos na produkto - batay sa code na ito, maaari kang sumulat ng iyong sariling programa nang mas mabilis at mas madali.

    Ngayon tingnan natin kung paano gumagana ang GPU mismo sa API. Hindi tamang isipin na ang isang tawag sa API ay direktang gumagana sa GPU, at mas hindi tamang isipin na natapos ng GPU ang pagproseso ng tawag kapag ibinalik ang resulta ng API. Halimbawa, kung ipapatupad ng driver ang pag-render ng mga utos sa sandaling nilikha ang mga ito, ii-idle nito ang CPU habang naghihintay na makumpleto ang pag-render. At pagkatapos ng pagpapatupad ito ay magiging kabaligtaran - ang GPU ay magiging idle, naghihintay para sa mga bagong command na dumating mula sa driver.

    Ayon dito dahilan ng CPU at ang mga GPU ay gumagana nang asynchronously: kinokolekta muna ng graphics driver ang lahat ng draw call para sa buong frame, at pagkatapos ay ipapadala lamang ang mga ito sa GPU. Dagdag pa, kapag dumating ang command na gumuhit ng susunod na frame, ang frame na ito ay ipoproseso na ng GPU. Iyon ay, nakakakuha kami ng isang pagkaantala ng isang frame: habang ang CPU ay naghahanda ng isang tawag para sa kasalukuyang frame, ang huling isa ay nai-render sa GPU. Sa katunayan, maaari kang mag-buffer ng higit sa isang frame, at sa gayon ay makakakuha mas mataas na dalas mga frame: ang lahat ay nakasalalay lamang sa pagganap ng processor at video card.

    Mga Inobasyon sa API Metal

    Ano ang mali sa pamamaraang inilarawan sa itaas? Ang masamang bagay tungkol dito ay mayroong isang tagapamagitan sa pagitan ng GPU at ng API - ang driver. At siya ang kumokontrol sa mga pagkaantala. Sa Metal API, bukas ang mga command buffer, at maaaring punan mismo ng application ang mga ito at ipadala ang mga ito sa command queue para sa execution sa GPU. Kaya ang application ay may ganap na kontrol sa gawain at maaaring pamahalaan ang mga pagkaantala. Bukod dito, posible na ngayong madaling iparallelize ang mga utos at ilagay ang mga ito sa isang buffer sa isang tiyak na pagkakasunud-sunod, dahil nagiging mas malinaw sa programmer kung aling mga resulta ang makukuha sa kung anong pagkakasunud-sunod.

    Ang isa pang mahalagang pagbabago ay ang hardware: sa Apple A7 at mas mataas na mga processor, ang Metal ay idinisenyo upang gumana nakabahaging memorya, ibig sabihin, maa-access ng CPU at GPU ang parehong data nang hindi kinakailangang ilipat ito sa kabuuan PCI bus. Binibigyan ng Metal ang programa ng direktang access sa mga buffer ng CPU, at ang programmer ay maaaring "maghalo" ng mga kalkulasyon sa GPU at CPU, na maaaring makabuluhang mapabilis ang programa.

    Tunay na benepisyo mula sa API Metal

    Gaya ng ipinaliwanag ko sa itaas, ang bawat draw call ay tumatagal ng ilang oras sa CPU at GPU. Ang pag-render sa isang GPU ay hindi maaaring gawing mas mabilis para sa malinaw na mga kadahilanan (depende lamang ito sa pagganap ng GPU mismo), ngunit maaari kang manalo sa iba pang mga paraan: una, maaari mong bawasan ang oras para sa paglipat ng data (dahil gumagana ang Metal sa nakabahaging memorya) , at pangalawa, maaari mong bawasan ang oras ng pagproseso ng tawag sa CPU. Ang oras ng pagproseso ng tawag sa CPU ay nabawasan dahil sa kawalan ng isang tagapamagitan na driver at dahil sa parallel na pagtatayo ng command buffer.

    At dito lumitaw ang tanong - anong sampung beses na pagtaas sa produktibo ang pinag-uusapan ng Apple? Oo, iyon mismo ang oras ng tawag sa CPU ay mas maikli na ngayon. Ngunit ang GPU ay halos hindi apektado dito, kaya sa huli, sa kasamaang-palad imposibleng direktang mapabuti ang mga graphics gamit ang Metal API. Ngunit dahil libre ang processor, maaari itong ma-load ng physics: pagkalkula ng particle physics, pakikipag-ugnayan ng maraming bagay (naaalala ng lahat ang isang daang lumilipad na unggoy sa Mga presentasyon sa iPhone 7?), pagkalkula ng mga epekto ng tela at tubig, at iba pa. At dahil ginagawa ito ng GPU dati, nililibre namin ito, at lumalabas na hindi direkta ay maaari na itong mag-output pinakamahusay na larawan, kung ano ang nakikita natin sa mga laro (kabilang ang Asphalt 8) (bigyang-pansin ang detalye ng mga paving stone at mga epekto):

    Interoperability sa pagitan ng OpenGL at Metal

    Tulad ng makikita mula sa itaas, talagang pinapabuti ng Metal ang buhay ng processor. Samakatuwid, kung ang sistema ay hindi sumusuporta sa Metal, ngunit may napaka malakas na processor, kung gayon hindi partikular na mahirap na muling isulat ang laro para sa OpenGL - at ito mismo ang nakikita natin sa Vainglory para sa Android - upang makakuha ng maximum na graphics (Apple A9 level) sa OpenGL na kailangan mo nangungunang processor antas ng Snapdragon 820, na sa mga tuntunin ng hilaw na pagganap (sa FLOPS) ay dalawang beses na mas malakas kaysa sa A9.

    Apple Metal 2

    Sa pagtatanghal ng Hunyo, ipinakilala ng Apple ang isang bagong bersyon ng Metal. Ang mga pangunahing pagpapabuti ay suporta sa VR, machine learning at mga panlabas na GPU, na sa teorya ay magbibigay-daan sa pag-port sa Mga laro sa Mac mula sa PC nang walang anumang degradasyon sa mga graphics (sa ngayon, ang mga port ng karamihan sa mga laro ay mahalagang paglulunsad ng Alak, na makabuluhang binabawasan ang pagganap at lubos na nakakaapekto sa medyo mahina na mga GPU sa Mac). Ngunit makikita natin kung paano ito lalabas sa katotohanan lamang sa hinaharap.

    Noong nakaraang linggo ay ipinakita ito API Vulkan, kung saan inanunsyo ng AMD at NVIDIA ang malawakang suporta para sa. Bago GUI binuo Khronos Group, isang consortium na itinatag noong 2000. Ang Khronos Group ay responsable para sa pagpapaunlad at suporta bukas na mga pamantayan sa larangan ng mga multimedia application sa iba't ibang platform at device. Ang consortium ay sinusuportahan ng AMD at NVIDIA, pati na rin ng maraming iba pang kumpanya.

    Noong nakaraang linggo ang huling bersyon 1.0 ng Vulkan API ay niratipikahan. Ipinakita ng AMD at NVIDIA ang kani-kanilang mga beta driver. Ang AMD ay naglabas ng beta na bersyon nang maaga Radeon Software February 14 pa. Ipinakita ang NVIDIA Driver ng GeForce 356.39, na nakatuon din sa pagsuporta sa Vulkan API.

    Ang diskarte ng Vulkan API ay halos kapareho sa Mantle API. Ang punto ay ang mga developer ay nakakakuha ng higit pa malalim na pag-access sa hardware para masulit ito. Ang diskarte na ito ay nagbibigay-daan sa iyo upang maiwasan ang mga umiiral na bottleneck hangga't maaari. Sa kabilang banda, kailangang malaman ng mga developer kung ano mismo ang kanilang ginagawa - halimbawa, kapag nagtatrabaho sa memorya. Ang interface ng OpenGL ay hindi kasing tanyag ng DirectX, ngunit nagbibigay-daan ito sa iyo na mag-squeeze out pa.

    Ang Vulkan API sa bersyon 1.0 ay suportado sa Windows 7, Windows 8.1, Windows 10, Android at Linux. Ang mga developer ng laro ay hindi pa nag-anunsyo ng suporta para sa mga partikular na laro, ngunit sulit na maghintay para sa Games Developer Conference, na gaganapin mula Marso 14 hanggang 18 sa San Francisco. Mula sa mga engine ng laro, mayroon pa ring impormasyon tungkol sa Source 2, na sumusuporta na sa Vulkan API. Ang proseso ng pag-debug ay ginagawang mas madali sa pamamagitan ng suporta mula sa Valve, LunarG at Codeplay.

    Ang Prinsipyo ng Talos

    Okay, ngunit anong laro o engine ang sumusuporta sa Vulkan API? Ang Talos Principle ay binuo ng Croteam, na kilala na sumusuporta sa maraming graphics API sa nakaraan. At sa pinakabagong pag-ulit, ang Prinsipyo ng Talos ay walang pagbubukod - sinusuportahan nito ang DirectX 9, DirectX 11, OpenGL at ngayon ay Vulkan. Para sa development studio, ang Vulkan ay isang trial balloon, kahit na ang Vulkan API ay available sa bersyon 1.0, ang suporta ay nasa beta pa rin. Ang mga developer ng Croteam ay gumugol ng halos tatlong buwan sa pagdaragdag ng suporta. Ngunit ang unibersal na katangian ng API ay ginagawang posible na ipakilala ang isang variant ng Linux sa lalong madaling panahon.

    Ang Vulkan API ay theoretically compatible sa ilang mga platform - ngunit sa ngayon ang mga pagsubok at paghahambing ay maaari lamang gawin sa Windows, at ito ay may mga limitasyon. Ang pagpapatupad ay nananatili sa napakaagang yugto. Ang DirectX 11 rendering path ay umuunlad sa loob ng maraming taon, kaya walang puwang para sa pag-optimize. Narito ang sitwasyon ay higit na nakasalalay sa mga developer ng driver, katulad ng AMD at NVIDIA. Ang Prinsipyo ng Talos ay ang unang laro na sumuporta sa Vulkan. Samakatuwid, hindi pa posible na gawin pagsubok sa paghahambing upang suriin ang mabuti o masamang pagpapatupad ng suporta.

    Ang mga bagong teknolohiya ay unang ipinatupad sa mga halimbawang inihanda ng mga tagagawa. Sa kaso ng DirectX 12, ang diin ay inilagay sa Draw Calls, ang parehong 3DMark DirectX 12 na pagsubok ay umaasa lamang sa pagsukat sa pagganap ng Draw Calls, DirectX 12 laro tulad ng Star Wars, sinusubukan ding gumamit ng katulad na pagkarga. Ngunit ang Prinsipyo ng Talos ay hindi masyadong umaasa mataas na bilis Gumuhit ng Tawag upang ang mababang antas ng API ay gumawa ng malaking pagkakaiba.

    Ang suporta para sa bersyon 1.0 ng Vulkan API ay nasa maagang yugto nito, at ganoon din ang para sa mga driver ng AMD at NVIDIA. Ang parehong mga driver ay mahalagang mga bersyon ng beta, na kung paano tinitingnan ng mga tagagawa ng GPU ang mga ito. Karaniwang walang mga bagong pagpapahusay sa pagganap o suporta para sa mga bagong teknolohiya, kaya nakakakuha kami ng isang hakbang pabalik. Ngunit sa sandaling maabot ang isang tiyak na antas ng pag-unlad, ang parehong mga driver ng GPU developer ay makakatanggap ng suporta sa Vulkan huling bersyon. Kailan ito mangyayari ay hindi lubos na malinaw. Pero sa ngayon mga pangunahing aplikasyon huwag gumamit ng Vulkan at ang mga larong sumusuporta sa API ay nasa beta, kaya madaling mapino ng mga developer ng GPU ang kanilang mga driver.

    Para sa pagsubok kinuha namin ang aming sistema ng pagsubok para sa mga video card. Mga driver AMD video card at NVIDIA na inilarawan na namin sa itaas. Sa mga setting na itinakda namin pinakamataas na antas graphics, ngunit sinubukan din ang mga mababang resolution hanggang 1,280 x 720 pixels para pataasin ang performance ng Draw Call.

    Ang pagsubok sa Prinsipyo ng Talos - 1.280 x 720 pixels

    Ang pagsubok sa Prinsipyo ng Talos - 2.560 x 1.440 pixels

    Ang pagsubok sa Prinsipyo ng Talos - 3.840 x 2.160 pixels

    Tulad ng nakikita mo mula sa mga resulta, ang Vulkan API ay nagbibigay ng isang makabuluhang pagtaas kumpara sa OpenGL. Pero kanina Pagganap ng DirectX 11 kulang ang bagong API. Mayroong ilang mga dahilan para dito. Sa isang banda, ang pag-unlad para sa Vulkan ay nasa maagang yugto. Nalalapat ito sa API mismo, sa driver, at laro Ang Prinsipyo ng Talos. Kumpara sa OpenGL bagong interface nagbibigay-daan sa iyong magbakante ng ilang mapagkukunan at maiwasan ang mga bottleneck. Ngunit ang DirectX ay umuunlad sa loob ng maraming taon upang kasalukuyang antas. Sa anumang kaso, ang potensyal ng Vulkan API ay napakahusay.

    Kung susuriin namin ang mga detalye, wala kaming nakitang anumang visual na pagkakaiba sa pagitan ng Vulkan API at DirectX 11. Kaya't ang rendering path ay napakahusay na inangkop. Sa kasalukuyang pagpapatupad ng The Talos Principle, ang mga video card na may 2 GB ng memorya ay nakakaranas ng pagbaba sa pagganap, marahil dahil sa hindi karamihan mahusay na trabaho may memorya. Tulad ng Mantle at DirectX 12, ang Vulkan API ay maaaring ma-access ang mga mapagkukunan ng memorya sa isang mas malalim na antas - ang katotohanang ito ay makikita bilang isang kalamangan, ngunit maaari rin itong maging isang kawalan kung ang mga developer ay hindi maaaring gumamit ng memorya nang mahusay.

    Medyo nabigo ako sa error sa kasalukuyang Driver ng NVIDIA, dahil sa kung saan kailangang i-reboot ang system pagkatapos ng bawat pagsubok. Nang hindi nagre-reboot, nag-crash ang laro. Bagama't may driver ng AMD wala kaming nakitang ganitong error.

    Ang kasalukuyang pagpapatupad ng Vulkan API ay tila nangangako. Sa ngayon, hindi ito magiging masyadong nauugnay para sa mga laro sa mga desktop PC, dahil ang DirectX 11 at 12 market ay napakalaki, at kumpara sa parehong DirectX 12, ang mga gastos sa pagpapatupad ay maaaring masyadong mataas at ang mga ibinalik ay masyadong maliit. Ngunit kung ang mga laro ay kailangang tumakbo sa iba't ibang mga platform na may iba't ibang mga kinakailangan sa hardware, ang Vulkan ay maaaring gumanap ng isang mahalagang papel. Sa anumang kaso, dapat tayong maghintay ng reaksyon mula sa mga nag-develop ng laro, kung hindi, magkakaroon tayo ng problema sa manok at itlog na mahirap alisin.