Apple Metal API ni nini. GPU za NVIDIA ziko tayari kwa API ya Vulkan

API (Kiolesura cha Kuandaa Programu) huwapa wasanidi maunzi na programu njia za kuunda viendeshaji na programu zinazofanya kazi haraka kwenye majukwaa mbalimbali. Viendeshi vya programu vimeundwa kuingiliana moja kwa moja na API, badala ya mfumo wa uendeshaji na programu.

Kwa sasa kuna API mbili za michoro - OpenGL (SGI) na 3D Direct (Microsoft).

Ingawa watengenezaji wa adapta za video hutumia kiwango cha OpenGL, Microsoft hutoa usaidizi wa Direct3D kwa API ya kina zaidi inayoitwa DirectX.

DirectX 9 na hapo juu ni matoleo ya hivi karibuni ya kiolesura cha programu, ambayo huongeza usaidizi wa picha za 3D na hutoa uwezo bora wa michezo ya kubahatisha. Kwa maelezo zaidi kuhusu DirectX au kupakua toleo jipya zaidi, tembelea Tovuti ya Microsoft DirectX: www.microsoft.com/directx.

CrossFire au sli

Kwa kukabiliana na maendeleo na uendelezaji wa teknolojia ya zamani ya SLI (MK No. 30 (357) 2005) na NVIDIA, mshindani mkuu katika soko la kasi ya video, ATI, ilitengeneza na kutekeleza ufumbuzi wake sawa - teknolojia ya CrossFire. Kama tu SLI ya NVIDIA, hukuruhusu kuchanganya rasilimali za kadi mbili za video kwenye kompyuta moja na nyingine, na kuongeza utendakazi wa mfumo mdogo wa video. Teknolojia ya CrossFire kimsingi ni tofauti na SLI na, ipasavyo, ina uhusiano mdogo na mshindani wake. Kutoa upendeleo kwa faida fulani za teknolojia moja au nyingine, katika siku za usoni watumiaji watachagua kati ya NVIDIA na ATI sio tu kulingana na maoni kuhusu chapa zilizoundwa kwa miaka mingi, lakini pia kulingana na ukweli kuhusu teknolojia za SLI au CrossFire.

Msingi wa kiufundi

Kwa mlinganisho na NVIDIA, kuweka kadi mbili za video za ATI kwenye "kuunganisha" moja utahitaji ubao wa mama na chipset kutoka kwa mtengenezaji sawa (chipset ya Intel i975X pia imepangwa kusaidia CrossFire), na slots mbili za PCI Express. Kama SLI, CrossFire inadai rasilimali za mfumo, ambayo itahitaji usambazaji wa nguvu wa hali ya juu. Hebu tuangalie mahitaji ya mfumo kwa undani zaidi.

Ubao wa mama. Mama lazima awe na chipset msingi ATI Radeon Xpress 200 CrossFire. Bodi hizi zinapatikana kwa vichakataji vya AMD Sempron/Athlon 64 na Intel Pentium 4/Celeron. Kwa hivyo ATI sasa itafanya pesa kwenye chipsets, uzalishaji ambao haujafikia kiwango kikubwa hapo awali.

Kadi za video. Ili teknolojia ifanye kazi, unahitaji kadi kuu ya CrossFire (zaidi juu ya hii hapa chini) na kadi nyingine yoyote ya video kulingana na chip kutoka kwa familia sawa na kadi ya mwenyeji. Ni nini kinachofautisha kadi kuu kutoka kwa wengine ni uwepo wa kontakt DMS-59 (iliyounganishwa na DVI kwenye kadi ya mtumwa), Chip CrossFire, na, bila shaka, gharama.

Kitengo cha nguvu. Ili kudumisha seti kubwa kama hiyo, utahitaji usambazaji wa umeme na nguvu ya chini ya 400-450 W, ikiwezekana yenye nguvu zaidi.

Kweli, hiyo ndiyo yote unahitaji kukusanya mfumo wa video CrossFire. Kama ulivyoona, ATI inabadilika zaidi na wateja wake, sio kuwafunga kama ardhi kwa shamba la pamoja kwa ununuzi wa lazima wa kadi mbili zilizo na chip sawa kutoka kwa mtengenezaji mmoja. Ufungaji unafanywa tu kwa familia ya chip ya video ambayo kichochezi kinategemea. Hiyo ni, unaweza kununua kiongeza kasi cha video cha Radeon X800 na mtumwa wa Radeon X800 XL. Master Radeon X800 itaoana na kadi kutoka kwa mtengenezaji yeyote kulingana na urekebishaji wowote wa chip ya X800. Hii ni faida kabisa juu ya mshindani - ikiwa unachukua kiongeza kasi kimoja, kwa matarajio ya kisasa zaidi kwa kusakinisha kadi nyingine ya video, hautalazimika kutafuta kadi kutoka kwa mtengenezaji maalum kulingana na chip maalum. Kwa sasa, teknolojia ya CrossFire inasaidiwa na kadi za video kulingana na X800 na X850, pamoja na bidhaa mpya kulingana na X1xxx.

kuwa na uwiano wa juu wa ukandamizaji kuliko picha zilizo na maudhui ya chini ya vipengele vile (kwa mfano, grafu, michoro, textures rahisi). Picha za mwonekano wa juu zinaweza kubanwa kwa uwiano wa juu wa mgandamizo bila kuathiri ubora wao. Ili kudumisha ubora wa juu kwa picha za azimio la chini, uwiano wa ukandamizaji unaosababishwa lazima uwe chini sana. Picha zilizo na kina cha juu cha rangi (kama vile 24-bit Truecolor picha) zimebanwa kwa ufanisi zaidi kuliko picha zilizo na biti chache kwa kila pikseli (kama vile 8-bit grayscale).

Njia zingine nyingi za ukandamizaji wa hasara zina ulinganifu kwa asili. Hii ina maana kwamba ni msingi wa matumizi ya mlolongo maalum wa shughuli, ambazo zinafanywa kwa utaratibu wa nyuma wakati wa kufuta. Data ya kubana na kupunguza mgandamizo huchukua takriban muda sawa wa muda. Ukandamizaji wa Fractal ni mchakato usio na ulinganifu; mgandamizo huchukua muda mrefu zaidi kuliko mtengano. Inafuata kwamba data iliyoshinikizwa ya fractal inafaa kutumika katika hali ambapo faili za picha mara nyingi hupunguzwa lakini hazijabanwa, kwa mfano, wakati wa kuhifadhi picha katika hifadhidata za michoro kwenye CD-ROM.

Baadhi ya fomu za kawaida zimejadiliwa kwa ufupi hapa chini:

API za kisasa za GUI

Ukuzaji wa programu za kisasa za michoro changamano, haswa utumizi wa 3D, unahusishwa bila kutenganishwa na utumiaji wa API.

(Kiolesura cha Kuandaa Programu).

API ni seti ya maktaba ambayo inawakilisha kiolesura kilichotengenezwa tayari kwa programu kufanya kazi na vichapuzi vya 3D. Hivi sasa, sawa katika-

Kuna miingiliano mingi, lakini yote yanaweza kugawanywa katika madarasa mawili: zima na maalum.

API za Universal ni za kawaida kwa vichapuzi vyote vya 3D, na usaidizi wa kuongeza kasi ya maunzi kwa API hizi ni jukumu la vichapuzi vyenyewe. Kwanza kabisa, tunapaswa kuonyesha Microsoft DirectX na OpenGL. Zote mbili hutumiwa kimsingi katika programu za uhuishaji za kompyuta.

API maalum zimeundwa kufanya kazi na viongeza kasi vya michoro vilivyojengwa kwenye chipsets maalum za 3D; maarufu zaidi kati yao ni Glide API - kiolesura cha kufanya kazi na chipsi za VooDoo®; Metal - kwa chips za Savage3D, nk. Mipango iliyoandikwa kwa kutumia API maalum hufanya kazi tu kwenye vichapuzi ambavyo API hizi ziliundwa. API nyingi maalum hutoa kiolesura cha programu cha kiwango cha chini, lakini hivi karibuni, matoleo mapya ya DirectX yanajumuisha violesura vya usaidizi vya kiwango cha juu, kama vile DirectX kwa VisualBasic, ambayo hutoa usaidizi wa lugha kwa programu za medianuwai zilizoandikwa katika mazingira ya programu ya kuona ya Visual Basic.

Microsoft DirectX API

Microsoft DirectX API ni seti ya violesura vya programu vinavyotumiwa kutatua matatizo mbalimbali: kutoka kwa udhibiti wa programu ya vifaa vya kompyuta hadi maendeleo ya programu za multimedia zinazotumia aina mbalimbali za habari na kuundwa kwa ulimwengu wa kawaida.

Kusudi kuu ambalo Microsoft ilifuata wakati wa kuunda kiolesura cha DirectX ilikuwa kugeuza kompyuta zinazoendesha mfumo wa uendeshaji wa Windows kuwa jukwaa la ulimwengu kwa programu zilizo na vitu vingi vya media: picha za rangi kamili, vipande vya video,

tami, uhuishaji wa 3D na sauti ya stereo. Imejengwa moja kwa moja kwenye kernel ya Windows OS, kiolesura cha DirectX ni huduma iliyojumuishwa

Windows 98 na Windows 2000, pamoja na Microsoft Internet Explorer. Vipengele

DirectX pia inaweza kupakuliwa moja kwa moja kwenye kompyuta yako wakati wa kufunga michezo ya kisasa na programu za multimedia zilizotengenezwa kwa Windows 95. Kwa watengenezaji, DirectX hutoa seti ya interfaces ya programu, matumizi ambayo inakuwezesha kutatua matatizo mawili kuu.

Kwanza, DirectX hubadilisha programu zilizotengenezwa nayo kuwa programu zinazoendana na toleo lolote la Windows na huendesha kwenye kompyuta yoyote ambayo mfumo huu wa uendeshaji umewekwa, bila kujali aina ya programu inayotumiwa. Wakati huo huo, maombi hayo hufanya matumizi ya juu ya uwezo wa kiufundi wa kompyuta, kutoa utendaji wa juu zaidi. Hii inafanikiwa kupitia huduma inayotolewa na vipengele viwili kuu vya DirectX: interfaces za kiwango cha chini zinazounda DirectX Foundation na interfaces za juu zinazounda DirectX Media.

Pili, DirectX inawapa watengenezaji fursa ya kujiondoa kutoka kwa aina maalum ya adapta ya kuonyesha, kadi ya sauti au kasi ya 3D na kuzingatia mantiki ya programu yenyewe.

DirectX Foundation hutoa watengenezaji na seti ya miingiliano ya kiwango cha chini cha programu ambayo hutoa ufikiaji mzuri kwa uwezo wote wa kompyuta inayoendesha Windows OS, inayotekelezwa kwa kiwango cha vifaa - viongeza kasi vya 3D, kadi za sauti, vifaa vya kuingiza. Kabla ya ujio wa DirectX, watengenezaji wanaounda programu za multimedia kwa jukwaa la Windows walipaswa kusanidi programu zao kufanya kazi na aina tofauti za vifaa na usanidi. Suala hili sasa limetatuliwa. DirectX Foundation ina sehemu inayojulikana kama Tabaka la Uondoaji wa Vifaa (HAL), ambayo hutumia programu

madereva ili kuhakikisha mwingiliano kati ya programu na maunzi. Kwa hivyo, watengenezaji wanaweza kuunda toleo moja la programu kwa kutumia miingiliano ya DirectX bila kuwa na wasiwasi juu ya kuhakikisha kuwa inaendeshwa kwenye usanidi maalum wa maunzi. DirectX hutambua moja kwa moja uwezo wa kiufundi wa kompyuta yako na kuweka vigezo vinavyofaa. DirectX pia hukuruhusu kuendesha programu za media titika ambazo zinahitaji usaidizi wa maunzi ambayo haipatikani kwenye kompyuta yako. Katika hali hii, zinaigwa katika programu na kijenzi kinachoitwa Tabaka la Uigaji wa Vifaa (HEL) na hutoa viendeshi vya programu vinavyofanya kazi kama vifaa vinavyokosekana.

DirectX Media iko juu ya DirectX Foundation na hutoa huduma za kiwango cha juu - usaidizi wa uhuishaji, pato la utiririshaji (uwezo wa kusambaza na kutazama habari za sauti na video zinapopakuliwa kutoka kwa Mtandao) na mwingiliano. Ujumuishaji wa kiotomatiki wa huduma za kiwango cha chini zinazotolewa na DirectX Foundation na huduma za kiwango cha juu zinazotolewa na DirectX Media hurahisisha mchakato wa kuunda na kucheza vipengee vya media titika, kuruhusu wasanidi programu kujumuisha katika programu zao na kurasa za Wavuti, na hivyo kutoa maudhui ya media titika. ambayo haikuwepo hapo awali. Kwa kuongeza, DirectX Media husaidia kutatua tatizo la kuratibu aina tofauti za athari za multimedia, na kuifanya iwe rahisi kusawazisha uchezaji wao. Mbali na vipengele hivi viwili vya msingi, Microsoft DirectX pia inajumuisha vipengele vya ngazi ya juu vinavyotoa utendaji wa multimedia kwa programu za Wavuti. Hizi ni pamoja na: NetMeeting - zana ya kuandaa mijadala ya kikundi mtandaoni na Windows Media Player - zana ya kusambaza maudhui ya medianuwai kwenye Mtandao. Wacha tuchunguze kwa ufupi sehemu kuu

Vipengele vya DirectX Foundation. Hizi ni pamoja na Microsoft DirectDraw, Direct3D(Njia za Papo hapo na Zilizohifadhiwa), DirectInput, DirectMusic, DirectSound,

DirectSound 3D na DirectPlay. Miingiliano hii ya upangaji wa kiwango cha mfumo

kutoa upatikanaji wa ufanisi wa vifaa mbalimbali vya kompyuta na kuhakikisha uhuru halisi wa vifaa vya maombi, kuondoa matatizo ya ufungaji wa dereva na kutofautiana kwa majukwaa ya vifaa na programu.

Microsoft Direct3D ni kiolesura cha kufanya kazi na kadi za video za 3D. Usanifu wa Direct3D umeonyeshwa kwenye Mchoro 1.5.

Programu ya Win32

Direct3D inasaidia aina mbili za uendeshaji - Hali ya Haraka na Hali Iliyobaki. Katika Hali ya Haraka, Direct3D huwapa wasanidi programu usaidizi wa maunzi kwa uchezaji na programu za media titika katika mazingira ya Microsoft Windows. Inakuruhusu kufikia uhuru wa maunzi, inasaidia usanifu wa kichakataji wa Z-Z na Intel MMX inayoweza kubadilika. Katika hali hii, primitives ya msingi ya graphics inatekelezwa moja kwa moja, bila matumizi ya bafa ya utekelezaji.

Hali Iliyoimarishwa hurahisisha kuunda na kuhuisha ulimwengu wa 3D, ikisaidia vipengele viwili vipya: viingilizi vya uhuishaji vilivyo na mchanganyiko wa rangi, miondoko ya kitu laini na aina nyingi tofauti za mabadiliko, pamoja na kujaza mfuatano wa muundo wa wavu wa 3D.

vitu (meshes), kuruhusu upakuaji wao wa taratibu kutoka kwa seva za mbali. Hii huwawezesha wasanidi programu kutumia vyema michoro ya 3D bila kulazimisha moja kwa moja kudanganya miundo ya vitu katika kiwango cha chini.

Ikumbukwe kwamba maombi ya Direct3D yanawasiliana na vifaa vya graphics kwa njia sawa, bila kujali mode. Wanaweza au wasitumie uigaji wa programu kabla ya kufikia HAL. Kwa kweli, Direct3D imeunganishwa kwa karibu na sehemu ya DirectDraw, kwa hivyo katika Mchoro 1.2 safu ya uondoaji ya maunzi HAL imeteuliwa DirectDraw/Direct3D HAL. Direct3D Z-bafa na nyuso za maonyesho, huku DirectDraw inazionyesha moja kwa moja. Kiolesura cha Direct3D COM ni kiolesura cha DirectDraw.

DirectDraw ni meneja wa usimamizi wa kumbukumbu ambayo hutoa seti ya msingi ya utendakazi kwa michoro na programu za media titika zinazoendeshwa kwenye jukwaa la Windows. Tofauti na michoro ya jadi ya Windows, DirectDraw hutumia ufikiaji wa moja kwa moja ili kuonyesha kumbukumbu na vifaa vya michoro, huku ikitoa utangamano kamili na programu za Windows.

Mchoro 1.6 unaonyesha mwingiliano kati ya DirectDraw, kipengee cha kernel ya mfumo wa uendeshaji GDI (Kiolesura cha Kifaa cha Picha), Tabaka la Uondoaji wa maunzi (HAL), na safu ya uigaji ya maunzi.

(Safu ya Kuiga ya Vifaa, HEL). Kama unaweza kuona, DirectDraw inapatikana kwa kujitegemea

mo kutoka kwa GDI na violesura vyote viwili vina uwezo wa kufikia moja kwa moja vifaa vya michoro kupitia tabaka zinazojitegemea za maunzi. Tofauti na GDI, DirectDraw haitumii vipengele vya maunzi. Ikiwa kifaa fulani hakiauni utendakazi unaohitajika, DirectDraw hujaribu kuiga kwa kutumia HEL. DirectDraw inasaidia anuwai ya adapta za onyesho - kutoka kwa wachunguzi rahisi hadi vifaa ngumu vya kitaalamu. Kufanya kazi kwa kiwango cha nyuso za picha, DirectDraw hutumikia

msingi wa utendakazi wa hali ya juu wa picha na miingiliano na hukuruhusu kutumia uwezo wa maunzi uliotolewa na vifaa au kuiga ikiwa ni lazima.

Programu ya Win32

Tabaka la tion (HEL)

Tabaka la Kuondoa

Kadi ya video

Kielelezo 1.6 - Kuunganishwa kwa DirectDraw kwenye mfumo

DirectInput ni kiolesura cha vifaa mbalimbali vya ingizo - kibodi, kipanya, vijiti vya kufurahisha, pamoja na vifaa vya kulazimisha majibu. Ikilinganishwa na utendaji wa kawaida, wa kawaida, kiolesura hiki kinaauni vifaa zaidi na hutoa majibu ya haraka kwa maombi. Kwa kufanya kazi moja kwa moja na viendesha kifaa, DirectInput haitumii mfumo wa ujumbe wa Microsoft Windows.

Vipengele vipya vya DirectInput vinajumuisha orodha iliyopanuliwa ya vifaa vinavyotumika, ikijumuisha: pedi za mchezo, ndege

nira za ndege, vazi la uhalisia-pepe

Na vifaa vyenye maoni, vinavyotoa athari kama vile mtetemo, ukinzani wa harakati, n.k., matumizi ambayo hufanya michezo ya kisasa kuwa ya kweli zaidi.

DirectMusic ni sehemu mpya ya familia ya teknolojia ya DirectX, ambayo ni ganda la programu kwa kuunda templeti za muziki na maagizo ya kujibu vitendo vya mtumiaji. Hii inaruhusu wasanidi programu kuunda muziki wa usuli katika muda halisi kulingana na kanuni zilizobainishwa katika kurasa za Wavuti au programu za media titika. DirectMusic hutoa utekelezaji kamili wa kiwango cha Sauti Zinazopakuliwa (DLS), kuruhusu wasanidi programu kuunda violezo vya muziki vinavyocheza kwenye jukwaa lolote la maunzi. DirectMusic inajumuisha DirectMusic Producer - kihariri jumuishi kinachokuruhusu kufanya kazi na vitu vyote vya DirectMusic: mitindo, violezo, zana za DLS, n.k.

DirectPlay ni kiolesura cha programu cha hali ya juu kati ya programu ya programu na huduma za mawasiliano ambayo hurahisisha mawasiliano kupitia modemu au mtandao wa ndani. DirectPlay inajumuisha seti ya huduma zinazowaruhusu wachezaji kupata washirika na Wavuti, kudumisha mtiririko wa habari kati ya seva, na seti sawa ya utendaji inatumika kwa mtumiaji yeyote wa programu, bila kujali aina ya huduma ya mtandaoni au itifaki.

KATIKA Kwa kuongezea miingiliano ya kiwango cha chini cha DirectX Foundation, DirectX inajumuisha seti ya kiwango cha juu cha miingiliano ya programu.

na vipengele vya DirectX Media, vinavyotoa usaidizi kwa programu za medianuwai, uhuishaji na pato la habari la utiririshaji. DirectX Media kwa sasa ina miingiliano kuu ifuatayo ya programu:

DirectShow (iliyoitwa hapo awali ActiveMovieSDK); DirectUhuishaji (iliyoitwa hapo awali ActiveX Uhuishaji); Kubadilisha DirectX. Kumbuka kuwa huduma za DirectX Media hutumia huduma za DirectX Foundation.

, kazi, miundo na vidhibiti vilivyotolewa na programu (maktaba, huduma) au mfumo wa uendeshaji kwa ajili ya matumizi ya bidhaa za programu za nje. Inatumiwa na watengeneza programu wakati wa kuandika aina zote za programu.

Encyclopedic YouTube

  • 1 / 5

    API inafafanua utendakazi ambao programu (moduli, maktaba) hutoa, wakati API hukuruhusu kutoa muhtasari kutoka kwa jinsi utendakazi huu unatekelezwa.

    Ikiwa programu (moduli, maktaba) inachukuliwa kuwa kisanduku cheusi, basi API ni seti ya "vipini" ambavyo vinapatikana kwa mtumiaji wa kisanduku hiki na ambacho anaweza kuzungusha na kuvuta.

    Vipengele vya programu huingiliana kupitia API. Katika kesi hii, vipengele kawaida huunda uongozi - vipengele vya kiwango cha juu hutumia API ya vipengele vya kiwango cha chini, na wao, kwa upande wake, hutumia API ya vipengele hata vya chini.

    Itifaki za uhamishaji data kwenye Mtandao zimejengwa juu ya kanuni hii. Rafu ya kawaida ya itifaki (muundo wa mtandao wa OSI) ina safu 7 (kutoka safu halisi ya uhamishaji biti hadi safu ya itifaki ya programu kama vile HTTP na IMAP). Kila safu hutumia utendakazi wa safu ya awali ("chini") ya uhamisho wa data na, kwa upande wake, hutoa utendaji muhimu kwa kiwango cha pili ("juu").

    Ni muhimu kutambua kwamba dhana ya itifaki iko karibu kwa maana na dhana ya API. Zote mbili ni vifupisho vya utendaji, tu katika kesi ya kwanza tunazungumza juu ya uhamishaji wa data, na katika pili tunazungumza juu ya mwingiliano wa programu.

    API ya kazi na maktaba ya darasa inajumuisha maelezo sahihi Na semantiki ya kazi.

    Sahihi ya kazi

    Wakati mwingine wanatofautisha saini ya simu Na saini ya utekelezaji kazi. Sahihi ya simu kwa kawaida hutungwa kutoka kwa muundo wa kisintaksia wa simu ya kukokotoa, kwa kuzingatia saini ya upeo wa kitendakazi ulichopewa, jina la kitendakazi, mlolongo wa aina halisi za hoja katika simu, na aina ya kitendakazi. matokeo. Sahihi ya utekelezaji kwa kawaida inajumuisha baadhi ya vipengele kutoka kwa muundo wa kisintaksia wa tamko la chaguo la kukokotoa: kibainishi cha upeo wa utendakazi, jina lake, na mfuatano wa aina rasmi za hoja.

    Kwa mfano, katika lugha ya programu ya C ++, kazi rahisi inatambuliwa kipekee na mkusanyaji kwa jina lake na mlolongo wa aina za hoja zake, ambazo zinajumuisha saini ya kazi katika lugha hii. Ikiwa kitendakazi ni njia ya darasa fulani, basi jina la darasa pia litajumuishwa kwenye saini.

    Katika tasnia ya programu, API za kawaida, za kawaida za utendakazi wa kawaida ni muhimu kwa sababu zinahakikisha kuwa programu zote zinazotumia API ya kawaida zitafanya kazi sawa sawa, au angalau kwa njia inayojulikana. Kwa upande wa API za GUI, hii ina maana kwamba programu zitakuwa na interface sawa ya mtumiaji, ambayo inafanya kuwa rahisi kujifunza bidhaa mpya za programu.

    Kwa upande mwingine, tofauti katika API za mifumo tofauti ya uendeshaji hufanya iwe vigumu sana kusambaza programu kati ya majukwaa. Kuna njia mbali mbali za kuzunguka ugumu huu - kuandika API za "kati" (wxWidgets, , GTK, nk. GUI API), kuandika maktaba ambazo mfumo wa ramani huita simu za OS moja kwa simu za mfumo wa OS nyingine (muda wa kukimbia kama vile Mvinyo, cygwin nk. .), kuanzishwa kwa viwango vya utunzi katika lugha za programu (kwa mfano, maktaba ya kawaida ya lugha C), kuandika lugha zilizotafsiriwa zinazotekelezwa kwenye majukwaa tofauti (python, perl, php, tcl, Java, nk).

    Ikumbukwe pia kwamba programu mara nyingi huwa na API kadhaa tofauti ili kufikia matokeo sawa. Kwa kuongezea, kila API kawaida hutekelezwa kwa kutumia vipengee vya programu ya API ya kiwango cha chini cha uondoaji.

    Kwa mfano: ili kuona mstari “Hujambo, ulimwengu!” kwenye kivinjari. ", unahitaji tu kuunda hati ya HTML yenye kichwa kidogo na mwili rahisi ulio na mstari huu. Wakati kivinjari kinafungua hati hii, programu ya kivinjari itapitisha jina la faili (au maelezo ya faili tayari wazi) kwenye maktaba ambayo inashughulikia hati za HTML, ambayo, kwa kutumia API ya mfumo wa uendeshaji, itasoma faili hii na kuelewa muundo wake. , kisha upige simu kwa kufuatana kupitia maktaba ya API ya shughuli za kawaida za picha kama vile "futa dirisha", "andika "Hujambo, ulimwengu!" katika fonti iliyochaguliwa". Wakati wa kufanya shughuli hizi, maktaba ya primitives ya michoro itawasiliana na maktaba ya kiolesura cha dirisha na maombi yanayofaa, na maktaba hii itaita API ya mfumo wa uendeshaji ili kuandika data kwenye bafa ya kadi ya video.

    Zaidi ya hayo, karibu kila ngazi kuna API kadhaa mbadala zinazowezekana. Kwa mfano: tunaweza kuandika hati chanzo si kwa HTML, lakini katika LaTeX, na tunaweza kutumia kivinjari chochote kuonyeshwa. Vivinjari tofauti kwa ujumla hutumia maktaba tofauti za HTML, na kwa kuongezea, jambo zima linaweza kukusanywa kwa kutumia maktaba tofauti za zamani na kwenye mifumo tofauti ya uendeshaji.

    Changamoto kuu za mifumo iliyopo ya viwango vingi vya API ni kwa hivyo:

    • Ugumu katika kuhamisha msimbo wa programu kutoka kwa mfumo mmoja wa API hadi mwingine (kwa mfano, wakati wa kubadilisha OS);
    • Kupoteza utendaji wakati wa kusonga kutoka ngazi ya chini hadi ya juu. Kwa kusema, kila "safu" ya API huundwa ili kuwezesha utekelezaji wa seti ya kawaida ya shughuli. Lakini wakati huo huo, inakuwa ngumu sana au inakuwa haiwezekani kabisa kufanya shughuli zingine ambazo hutolewa na kiwango cha chini cha API.

    API maarufu zaidi

    Mifumo ya uendeshaji

    Miaka michache iliyopita, Apple ilianzisha API mpya ya picha - Metal. Tofauti yake kutoka kwa Scene Kit sawa ilikuwa kwamba si API ya kiwango cha juu inayoendesha juu ya OpenGL ES (toleo la simu ya OpenGL), lakini API ya kiwango cha chini ya utoaji na kompyuta ambayo inaweza kuchukua nafasi ya OpenGL. Kulingana na Apple, Metal ni utaratibu wa ukubwa kwa kasi zaidi kuliko OpenGL ES (hata hivyo, kwa kweli, tu kuteka simu na uhamisho wa data kwa GPU ni mara 10 haraka). API hii inapatikana kwa vifaa vyote vinavyotumia kichakataji cha A7 na kipya zaidi, pamoja na Mac kuanzia 2012.

    Jinsi API za michoro hufanya kazi

    Kwanza kabisa, API ni nini? Hii inawakilisha Kiolesura cha Kuandaa Programu, kiolesura cha utayarishaji wa programu. Kwa maneno rahisi, hii ni msimbo uliotengenezwa tayari ambao unaweza kufanya maisha ya programu rahisi zaidi wakati wa kuandika programu. Kwa kweli, hii ni aina fulani ya bidhaa za kumaliza nusu - kulingana na kanuni hii, unaweza kuandika programu yako mwenyewe kwa kasi na rahisi zaidi.

    Sasa hebu tuangalie jinsi GPU yenyewe inavyofanya kazi na API. Si sahihi kufikiria kuwa simu ya API hufanya kazi moja kwa moja kwenye GPU, na si sahihi zaidi kufikiria kuwa GPU inamaliza kuchakata simu wakati matokeo ya API yanarejeshwa. Kwa mfano, ikiwa dereva angetekeleza amri za upeanaji wakati zilipoundwa, itazima CPU huku ikingoja uwasilishaji ukamilike. Na baada ya utekelezaji itakuwa njia nyingine kote - GPU itakuwa bila kazi, kusubiri amri mpya kuwasili kutoka kwa dereva.

    Kwa sababu hii, CPU na GPU hufanya kazi kwa usawa: kiendeshi cha michoro kwanza hukusanya simu zote za kuteka kwa fremu nzima, na kisha kuzituma kwa GPU. Zaidi ya hayo, amri ya kuchora fremu inayofuata itakapofika, fremu hii tayari itachakatwa na GPU. Hiyo ni, tunapata kucheleweshwa kwa fremu moja: wakati CPU inatayarisha simu kwa fremu ya sasa, ya mwisho inatolewa kwenye GPU. Kwa kweli, unaweza buffer zaidi ya sura moja, na hivyo kupata kiwango cha juu cha fremu: yote inategemea tu utendaji wa processor na kadi ya video.

    Ubunifu katika Metal API

    Kuna ubaya gani kwa njia iliyoelezwa hapo juu? Jambo baya juu yake ni kwamba kuna mpatanishi kati ya GPU na API - dereva. Na yeye ndiye anayedhibiti ucheleweshaji. Katika API ya Metal, vibafa vya amri vimefunguliwa, na programu inaweza kuzijaza yenyewe na kuzituma kwenye foleni ya amri kwa utekelezaji kwenye GPU. Kwa njia hii, programu ina udhibiti kamili juu ya kazi na inaweza kudhibiti ucheleweshaji. Zaidi ya hayo, sasa inawezekana kusawazisha amri kwa urahisi na kuziweka kwenye buffer kwa utaratibu fulani, kwa kuwa inakuwa wazi zaidi kwa programu ambayo matokeo yatapatikana kwa utaratibu gani.

    Ubunifu mwingine muhimu ni vifaa: kwenye Apple A7 na wasindikaji wa juu, Metal imeundwa kufanya kazi na kumbukumbu iliyoshirikiwa, ambayo ni, CPU na GPU zinaweza kufikia data sawa bila hitaji la kuhamisha kwenye basi ya PCI. Metal huipa programu ufikiaji wa moja kwa moja kwa vihifadhi vya CPU, na kipanga programu kinaweza "kuchanganya" mahesabu kwenye GPU na CPU, ambayo inaweza kuongeza kasi ya programu.

    Faida halisi kutoka kwa API Metal

    Kama nilivyoeleza hapo juu, kila simu ya kuchora inachukua muda kwenye CPU na GPU. Utoaji kwenye GPU hauwezi kufanywa haraka kwa sababu za wazi (inategemea tu utendaji wa GPU yenyewe), lakini unaweza kushinda kwa njia nyingine: kwanza, unaweza kupunguza muda wa uhamisho wa data (kwani Metal inafanya kazi na kumbukumbu iliyoshirikiwa) , na pili, unaweza kupunguza muda wa usindikaji wa simu kwenye CPU. Muda wa usindikaji wa simu kwenye CPU umepunguzwa kutokana na kutokuwepo kwa dereva wa kati na kutokana na ujenzi wa sambamba wa bafa ya amri.

    Na hapa swali linatokea - ni ongezeko gani la tija ambalo Apple alikuwa akizungumzia? Ndio, ndivyo wakati wa kupiga simu kwenye CPU sasa ni mfupi zaidi. Lakini GPU karibu haijaathiriwa hapa, kwa hivyo mwishowe, kwa bahati mbaya haiwezekani kuboresha moja kwa moja picha kwa kutumia API ya Metal. Lakini kwa kuwa processor ni bure, inaweza kubeba na fizikia: kuhesabu fizikia ya chembe, mwingiliano wa vitu vingi (je, kila mtu anakumbuka nyani mia moja ya kuruka kwenye uwasilishaji wa iPhone 7?), kuhesabu athari za kitambaa na maji, na kadhalika. Na kwa kuwa GPU ilikuwa ikifanya hivi, tunaifungua, na inabadilika kuwa bila moja kwa moja sasa inaweza kutoa picha bora, ambayo ndio tunaona katika michezo (pamoja na Asphalt 8) (makini na maelezo ya mawe ya kutengeneza. na athari):

    Ushirikiano kati ya OpenGL na Metal

    Kama inavyoonekana kutoka hapo juu, Metal inaboresha maisha ya processor. Kwa hivyo, ikiwa mfumo hauungi mkono Metal, lakini una processor yenye nguvu sana, basi sio ngumu sana kuandika tena mchezo kwa OpenGL - na hii ndio hasa tunayoona katika Vainglory kwa Android - kupata picha za juu (kiwango cha Apple A9). ) kwenye OpenGL, kichakataji cha mwisho cha kiwango cha Snapdragon 820 kinahitajika , ambayo kwa suala la utendaji mbichi (katika FLOPS) ina nguvu mara mbili kuliko A9.

    Apple Metal 2

    Katika uwasilishaji wa Juni, Apple ilianzisha toleo jipya la Metal. Maboresho makuu ni usaidizi wa VR, kujifunza kwa mashine na GPU za nje, ambayo kwa nadharia itakuruhusu kusafirisha michezo ya PC hadi Mac bila uharibifu wowote wa picha (kwa sasa, bandari za michezo mingi kimsingi zinaendesha Mvinyo, ambayo hupunguza sana utendaji na ina athari kubwa kwa GPU ambazo tayari ni dhaifu katika Mac). Lakini tutaona jinsi hii itatokea katika hali halisi tu katika siku zijazo.

    Wiki iliyopita, API ya Vulkan ilianzishwa, na AMD na NVIDIA walitangaza msaada mkubwa kwa hiyo. Kiolesura kipya cha picha kilitengenezwa na Kundi la Khronos, muungano ulioanzishwa mwaka wa 2000. Kundi la Khronos lina jukumu la kukuza na kudumisha viwango vilivyo wazi kwa programu za media titika kwenye majukwaa na vifaa. Muungano huu unasaidiwa na AMD na NVIDIA, pamoja na makampuni mengine mengi.

    Wiki iliyopita toleo la mwisho la 1.0 la API ya Vulkan liliidhinishwa. AMD na NVIDIA waliwasilisha viendeshi vyao vya beta. AMD ilitoa toleo la awali la beta la Radeon Software mnamo Februari 14. NVIDIA ilianzisha dereva wa GeForce 356.39, ambayo pia inalenga kusaidia API ya Vulkan.

    Mbinu ya API ya Vulkan ni sawa na API ya Mantle. Wazo ni kwa wasanidi programu kupata ufikiaji wa kina wa maunzi ili kufaidika nayo. Njia hii inakuwezesha kuepuka vikwazo vilivyopo iwezekanavyo. Kwa upande mwingine, watengenezaji wanahitaji kujua hasa wanachofanya - kwa mfano, wakati wa kufanya kazi na kumbukumbu. Kiolesura cha OpenGL si maarufu kama DirectX, lakini hukuruhusu kufinya zaidi.

    API ya Vulkan katika toleo la 1.0 inatumika kwenye Windows 7, Windows 8.1, Windows 10, Android na Linux. Wasanidi wa mchezo bado hawajatangaza msaada kwa michezo mahususi, lakini inafaa kungojea Mkutano wa Wasanidi Programu wa Michezo, ambao utafanyika kutoka Machi 14 hadi 18 huko San Francisco. Kutoka kwa injini za mchezo, bado kuna habari kuhusu Chanzo 2, ambacho tayari kinaauni API ya Vulkan. Mchakato wa kurekebisha hitilafu unarahisishwa na usaidizi kutoka kwa Valve, LunarG na Codeplay.

    Kanuni ya Talos

    Sawa, lakini ni mchezo gani au injini gani inayotumia Vulkan API? Kanuni ya Talos ilitengenezwa na Croteam, ambayo inajulikana kusaidia API nyingi za michoro hapo awali. Na katika marudio ya hivi karibuni, Kanuni ya Talos sio ubaguzi - inasaidia DirectX 9, DirectX 11, OpenGL na sasa Vulkan. Kwa studio ya ukuzaji, Vulkan ni puto ya majaribio, ingawa API ya Vulkan inapatikana katika toleo la 1.0, usaidizi bado uko katika beta. Watengenezaji wa Croteam walitumia takriban miezi mitatu kuongeza usaidizi. Lakini asili ya jumla ya API inafanya uwezekano wa kuanzisha lahaja ya Linux hivi karibuni.

    API ya Vulkan kinadharia inaendana na majukwaa kadhaa - lakini hadi sasa majaribio na ulinganisho unaweza tu kufanywa kwenye Windows, na hii ina mapungufu yake. Utekelezaji unabaki katika hatua ya awali sana. Njia ya utoaji wa DirectX 11 imeboreshwa kwa miaka mingi, kwa hiyo hakuna nafasi ya uboreshaji. Hapa hali inategemea zaidi watengenezaji wa dereva, yaani AMD na NVIDIA. Kanuni ya Talos ilikuwa mchezo wa kwanza kusaidia Vulkan. Kwa hiyo, bado haiwezekani kufanya mtihani wa kulinganisha ili kutathmini utekelezaji mzuri au mbaya wa usaidizi.

    Teknolojia mpya zinatekelezwa kwanza katika mifano iliyoandaliwa na wazalishaji. Kwa upande wa DirectX 12, msisitizo ulikuwa kwenye Chora Simu, jaribio sawa la 3DMark DirectX 12 linategemea tu kupima utendaji wa Kuchora Simu, michezo ya DirectX 12 kama Star Wars pia hujaribu kutumia mzigo sawa. Lakini Kanuni ya Talos haitegemei sana kasi ya juu ya Kupiga Simu kwa API ya kiwango cha chini kuleta mabadiliko mengi.

    Usaidizi wa toleo la 1.0 la Vulkan API uko katika hatua zake za awali, na viendeshi vya AMD na NVIDIA vivyo hivyo. Madereva yote mawili kimsingi ni matoleo ya beta, ambayo ni jinsi watengenezaji wa GPU wanavyoyaona. Kwa kawaida hakuna maboresho mapya ya utendakazi au usaidizi wa teknolojia mpya, kwa hivyo tunarudi nyuma. Lakini mara tu kiwango fulani cha maendeleo kitakapofikiwa, viendeshi vyote viwili vya wasanidi wa GPU vitakuwa na usaidizi wa Vulkan katika toleo la mwisho. Wakati hii itatokea si wazi kabisa. Lakini kwa sasa, programu muhimu hazitumii Vulkan na michezo inayotumia API iko kwenye beta, kwa hivyo wasanidi wa GPU wanaweza kuboresha viendeshi vyao kwa usalama.

    Kwa majaribio, tulichukua mfumo wetu wa majaribio kwa kadi za video. Tayari tumeelezea madereva ya kadi za video za AMD na NVIDIA hapo juu. Tuliweka mipangilio ya michoro kwa kiwango cha juu zaidi, lakini pia tulijaribu ubora wa chini hadi pikseli 1,280 x 720 ili kuongeza utendaji wa Chora Simu.

    Jaribio la Kanuni ya Talos - pikseli 1.280 x 720

    Jaribio la Kanuni ya Talos - pikseli 2.560 x 1.440

    Jaribio la Kanuni ya Talos - pikseli 3.840 x 2.160

    Kama unaweza kuona kutoka kwa matokeo, API ya Vulkan inatoa ongezeko kubwa ikilinganishwa na OpenGL. Lakini API mpya haifikii utendaji wa DirectX 11. Kuna sababu kadhaa za hii. Kwa upande mmoja, maendeleo ya Vulkan yako katika hatua ya awali. Hii inatumika kwa API yenyewe, kiendeshaji, na mchezo Kanuni ya Talos. Ikilinganishwa na OpenGL, kiolesura kipya hukuruhusu kuweka baadhi ya rasilimali na kuepuka vikwazo. Lakini DirectX imekuwa ikiboresha kwa miaka mingi hadi kiwango chake cha sasa. Kwa hali yoyote, uwezo wa API ya Vulkan ni nzuri sana.

    Ikiwa tutaingia kwenye maelezo, hatukupata tofauti zozote za kuona kati ya Vulkan API na DirectX 11. Kwa hivyo njia ya utoaji imebadilishwa vizuri sana. Kwa utekelezaji wa sasa wa Kanuni ya Talos, kadi za video zilizo na kumbukumbu ya GB 2 hupata kushuka kwa utendakazi, pengine kutokana na kutofanya kazi kwa ufanisi zaidi na kumbukumbu. Kama Mantle na DirectX 12, API ya Vulkan inaweza kufikia rasilimali za kumbukumbu kwa kiwango cha kina - ukweli huu unaweza kuonekana kama faida, lakini pia inaweza kuwa shida ikiwa watengenezaji hawawezi kutumia kumbukumbu kwa ufanisi.

    Nilikatishwa tamaa kwa kiasi fulani na mdudu katika dereva wa sasa wa NVIDIA, kwa sababu ambayo ilinibidi kuwasha tena mfumo baada ya kila jaribio. Bila kuwasha tena mchezo ulianguka. Ingawa hatukukutana na hitilafu sawa na dereva wa AMD.

    Utekelezaji wa sasa wa API ya Vulkan unaonekana kuahidi. Kwa sasa, haitakuwa muhimu sana kwa michezo kwenye Kompyuta za mezani, kwani soko la DirectX 11 na 12 ni kubwa sana, na ikilinganishwa na DirectX 12 sawa, gharama za utekelezaji zinaweza kuwa kubwa sana na mapato ni ndogo sana. Lakini ikiwa michezo inahitaji kuendeshwa kwenye majukwaa tofauti yenye mahitaji tofauti ya maunzi, Vulkan inaweza kuchukua jukumu muhimu. Kwa hali yoyote, tunapaswa kusubiri majibu kutoka kwa watengenezaji wa mchezo, vinginevyo tunaishia na tatizo la kuku na yai ambalo ni vigumu kutoka.