Moderne grafische API's. Apple Metal API: wat is de truc?

De API definieert de functionaliteit die een programma (module, bibliotheek) biedt, terwijl je met de API kunt abstraheren van hoe deze functionaliteit precies wordt geïmplementeerd.

Als een programma (module, bibliotheek) als een black box wordt beschouwd, dan is de API een set ‘handvatten’ die beschikbaar zijn voor de gebruiker van deze doos, die hij kan draaien en trekken.

Softwarecomponenten communiceren met elkaar via API's. In dit geval vormen componenten gewoonlijk een hiërarchie: componenten op hoog niveau gebruiken de API van componenten op laag niveau, en zij gebruiken op hun beurt de API van componenten op nog lager niveau.

Protocollen voor gegevensoverdracht zijn op dit principe gebouwd. Het standaard internetprotocol (OSI-netwerkmodel) bevat 7 lagen (vanaf fysiek niveau het doorgeven van bitpakketten aan applicatieprotocollen zoals HTTP en IMAP). Elke laag gebruikt de functionaliteit van de vorige laag voor gegevensoverdracht en levert op zijn beurt de noodzakelijke functionaliteit aan de volgende laag.

Het is belangrijk op te merken dat het concept van een protocol qua betekenis dicht bij het concept van een API ligt. Beide zijn abstracties van functionaliteit, alleen in het eerste geval hebben we het over gegevensoverdracht en in het tweede geval over het bouwen van computerapplicaties.

De functie- en klassenbibliotheek-API bevat een beschrijving handtekeningen En semantiek van functies.

A(API) software-interface interactie tussen systemen, waardoor:

  • Krijg toegang tot zakelijke zakelijke services
  • Wissel informatie uit tussen systemen en applicaties
  • Vereenvoudig de interacties tussen bedrijven, partners, ontwikkelaars en klanten

Open API-strategie

API-strategie omvat:

  • Ontwikkeling van zakelijke producten op basis van bestaande API's
  • Het leveren van interne diensten aan ontwikkelaars
  • API-modellen voor het genereren van inkomsten voor het opbouwen van interactie via meerdere kanalen en het verhogen van de winst

De implementatie van het Open API-concept helpt bedrijven te transformeren, te integreren in een flexibel projectecosysteem van marktspelers, voorwaarden te scheppen voor de constante generatie van nieuwe ideeën en het creëren van extra waarde bij het beheren van reeksen bedrijfsgegevens.

De markt voor integratieoplossingen ontwikkelt zich in de context van de evolutie van API's - van EDI en SOAP naar Web 2.0, waarmee het tijdperk van publieke API's begon. Het aantal van dergelijke interfaces kan de komende drie jaar meer dan vijftig keer toenemen en oplopen tot één miljoen. Dit komt door omnichannel: de kanalen voor interactie met klanten moeten mee veranderen. De aanhoudende groei van het aantal consumenten en de hoeveelheid data heeft geleid tot de opkomst van de API-economie, die helpt bij het creëren van innovatieve bedrijfsmodellen voor het gebruik van bedrijfsmiddelen en -diensten op basis van open interfaces.

Functie handtekening

Functie handtekening- onderdeel van een algemene functieverklaring waarmee omroeporganisaties onder andere de functie kunnen identificeren. Verschillende programmeertalen hebben verschillende ideeën over de handtekening van een functie, wat ook nauw samenhangt met de mogelijkheden van functie-overbelasting in deze talen.

Soms maken ze onderscheid handtekening bellen En handtekening van de uitvoering functies. Een oproephandtekening wordt gewoonlijk samengesteld uit de syntactische structuur van een functieaanroep, waarbij rekening wordt gehouden met de handtekening van de reikwijdte van de gegeven functie, de naam van de functie, de volgorde van de werkelijke typen argumenten in de aanroep en het type van de oproep. resultaat. De implementatiehandtekening bevat doorgaans enkele elementen uit de syntactische structuur van de functiedeclaratie: een functiescope-specificatie, de naam ervan en een reeks formele argumenttypen.

In de programmeertaal C++ wordt een eenvoudige functie bijvoorbeeld op unieke wijze door de compiler geïdentificeerd aan de hand van zijn naam en de reeks typen argumenten, die in deze taal de functiesignatuur vormt. Als een functie een methode is van een bepaalde klasse, dan wordt de klassenaam ook in de handtekening opgenomen.

Ook moet worden opgemerkt dat de programmeur vaak over meerdere verschillende API's beschikt om hetzelfde resultaat te bereiken. Bovendien wordt elke API meestal geïmplementeerd met met behulp van de API softwarecomponenten op een lager abstractieniveau.

Bijvoorbeeld: om de regel “Hallo wereld!” in de browser te zien. u hoeft alleen maar een HTML-document te maken met een minimale titel en een eenvoudige hoofdtekst deze lijn. Wat gebeurt er als de browser dit document opent? Het browserprogramma zal de bestandsnaam (of een reeds geopende bestandsdescriptor) doorgeven aan de bibliotheek die HTML-documenten verwerkt, die op zijn beurt, met behulp van de API van het besturingssysteem, dit bestand zal lezen en de structuur ervan zal begrijpen, door bewerkingen aan te roepen als “clear the window”, “schrijf Hallo wereld in het geselecteerde lettertype!”, Tijdens deze bewerkingen zal de bibliotheek met grafische primitieven contact opnemen met de vensterinterfacebibliotheek met de bijbehorende verzoeken, en deze bibliotheek zal contact opnemen met de API van het besturingssysteem met verzoeken zoals “plaats het in mijn videokaart buffert dit."

Bovendien zijn er op vrijwel elk niveau feitelijk meerdere mogelijke alternatieve API’s. We kunnen het brondocument bijvoorbeeld niet in HTML schrijven, maar in LaTeX, en we kunnen elke browser gebruiken voor weergave. Verschillende browsers gebruiken over het algemeen verschillende HTML-bibliotheken, en bovendien kan het geheel (in het algemeen gesproken) worden gecompileerd met behulp van verschillende primitieve bibliotheken en op verschillende besturingssystemen.

De belangrijkste uitdagingen van bestaande multi-level API-systemen zijn daarom:

  • Moeilijkheden bij het porten programmacode van het ene API-systeem naar het andere (bijvoorbeeld bij het wijzigen van het besturingssysteem);
  • Verlies van functionaliteit bij het overstappen van een lager niveau naar een hoger niveau. Grof gezegd wordt elke API-laag gemaakt om de uitvoering van een standaardreeks bewerkingen te vergemakkelijken. Maar tegelijkertijd wordt het erg moeilijk of fundamenteel onmogelijk om andere bewerkingen uit te voeren die worden geleverd door een lager API-niveau.

Basis API-typen

Interne API's

  • API-toegang is uitsluitend beperkt tot interne ontwikkelaars
  • Toepassingen zijn gericht op werknemers van ondernemingen

Zakelijke drijfveren:

  • Consistentie van de ontwikkeling
  • Kostenreductie
  • Verhoogde ontwikkelingsefficiëntie

Partner-API's

  • API's zijn alleen beschikbaar voor een beperkt aantal zakenpartners
  • Applicaties zijn ontworpen voor eindgebruikers en zakelijke gebruikers

Zakelijke drijfveren:

  • Automatisering van het ontwikkelingsproces
  • Ontwikkeling van partnerschappen
  • Optimaliseren van het proces van interactie met partners

Openbare API's

Toegang wordt verleend aan iedere externe ontwikkelaar. Applicaties zijn gericht op eindgebruikers

Zakelijke drijfveren:

  • Ontwikkeling van nieuwe diensten
  • Ontwikkeling van het ecosysteem
  • Omnichannel-interactie

Meest bekende API's

Besturingssystemen-API

GUI-API

  • Direct3D (onderdeel van DirectX)
  • DirectDraw (onderdeel van DirectX)

zijn meer hoge graad compressie dan afbeeldingen met een lage inhoud van dergelijke elementen (bijvoorbeeld grafieken, diagrammen, eenvoudige texturen). Afbeeldingen van hoge resolutie kunnen worden gecomprimeerd met een hoge compressieverhouding zonder de kwaliteit ervan te beïnvloeden. Om op te slaan hoge kwaliteit Voor afbeeldingen met een lage resolutie moet de uiteindelijke compressieverhouding veel lager zijn. Afbeeldingen met een hoge kleurdiepte (zoals 24-bits Truecolor-afbeeldingen) worden efficiënter gecomprimeerd dan afbeeldingen met minder bits per pixel (zoals 8-bits grijstinten).

De meeste andere compressiemethoden met verlies zijn symmetrisch van aard. Dit betekent dat ze gebaseerd zijn op het gebruik van een specifieke reeks handelingen, die bij het uitpakken in omgekeerde volgorde worden uitgevoerd. Het comprimeren en decomprimeren van gegevens kost ongeveer dezelfde hoeveelheid tijd. Fractale compressie is een asymmetrisch proces; compressie duurt veel langer dan decompressie. Hieruit volgt dat fractal gecomprimeerde gegevens nuttig zijn in gevallen waarin afbeeldingsbestanden vaak worden gedecomprimeerd maar nooit gecomprimeerd, bijvoorbeeld bij het opslaan van afbeeldingen in grafische databases op cd-rom.

Enkele van de meest voorkomende vormen worden hieronder kort besproken:

Modern grafische API's

Ontwikkeling van modern complex grafische programma's, vooral 3D-applicaties, is onlosmakelijk verbonden met het gebruik van API’s

(Applicatieprogrammeerinterface).

API is een reeks bibliotheken die een kant-en-klare interface vertegenwoordigen waarmee het programma met 3D-versnellers kan werken. Momenteel worden soortgelijke

Er zijn nogal wat interfaces, maar ze kunnen allemaal in twee klassen worden verdeeld: universeel en gespecialiseerd.

Universele API's zijn gemeenschappelijk voor alle 3D-versnellers en ondersteuning hardwareversnelling voor deze API’s is de verantwoordelijkheid van de accelerators zelf. Allereerst moeten we Microsoft DirectX en OpenGL benadrukken. Beide worden voornamelijk gebruikt in computeranimatieprogramma's.

Gespecialiseerde API's zijn ontworpen om te werken met grafische versnellers die zijn gebouwd op specifieke 3D-chipsets; de bekendste onder hen zijn Glide API - een interface voor het werken met VooDoo®-chips; Programma's die zijn geschreven met behulp van gespecialiseerde API's werken alleen op de accelerators waarvoor deze API's zijn gemaakt. De meeste gespecialiseerde API's bieden slechts een programmeerinterface op laag niveau, maar de laatste tijd, nieuw DirectX-versies omvatten ondersteuningsinterfaces op hoog niveau, zoals DirectX voor VisualBasic, dat taalondersteuning biedt voor multimediatoepassingen die zijn geschreven in de VisualBasic-omgeving Visuele programmering Basis.

Microsoft DirectX-API

De Microsoft DirectX API is een reeks programmeerinterfaces die worden gebruikt om problemen op te lossen diverse taken: van programma controle computerhardware vóór ontwikkeling multimediatoepassingen het gebruik van verschillende soorten informatie en het creëren van virtuele werelden.

Het belangrijkste doel dat Microsoft nastreefde bij het maken van de DirectX-interface was het draaiende maken van computers Windows-systemen, V universeel platform voor toepassingen die rijk zijn aan multimedia-elementen: afbeeldingen in kleur, videofragmenten

Tami, 3D-animatie en stereogeluid. Rechtstreeks ingebouwd in de OS-kernel Windows-interface DirectX is een geïntegreerde dienst

Windows 98 en Windows 2000, evenals Microsoft-internet Ontdekkingsreiziger. Componenten

DirectX kan tijdens de installatie ook automatisch naar uw computer worden gedownload moderne spellen en multimediatoepassingen ontwikkeld voor Windows 95. Voor ontwikkelaars biedt DirectX een reeks software-interfaces waarmee u twee hoofdproblemen kunt oplossen.

Ten eerste verandert DirectX de applicaties die ermee zijn ontwikkeld in programma's die compatibel zijn met alle programma's Windows-versie en draait op elke computer waarop dit besturingssysteem is geïnstalleerd, ongeacht het gebruikte type software. Tegelijkertijd soortgelijke toepassingen maak er het beste van technische mogelijkheden computer, verstrekken hoogste prestatie. Dit wordt bereikt door de service van twee hoofdbedrijven DirectX-componenten: interfaces op laag niveau inbegrepen in DirectX-compositie Foundation en de hoogwaardige interfaces waaruit DirectX Media bestaat.

Ten tweede geeft DirectX ontwikkelaars de mogelijkheid om afstand te nemen van het specifieke type beeldschermadapter, geluidskaart of 3D-versneller en zich te concentreren op de logica van het programma zelf.

De DirectX Foundation biedt ontwikkelaars een reeks software-interfaces op laag niveau die efficiënte toegang bieden tot alle mogelijkheden van een computer met Windows OS, geïmplementeerd op hardwareniveau: 3D-versnellers, geluidskaarten, informatie-invoerapparaten. Vóór de komst van DirectX moesten ontwikkelaars die multimediatoepassingen voor het Windows-platform maakten hun programma's configureren om met verschillende soorten apparaten en configuraties te werken. Dit probleem is nu opgelost. DirectX Foundation bevat een component die bekend staat als de Hardware Abstraction Layer (HAL), die gebruik maakt van software

stuurprogramma's om de interactie tussen software en hardware te garanderen. Als gevolg hiervan kunnen ontwikkelaars één versie van een applicatie maken met behulp van DirectX-interfaces, zonder zich zorgen te hoeven maken of deze op specifieke hardwareconfiguraties draait. DirectX detecteert automatisch de technische mogelijkheden van uw computer en stelt de juiste parameters in. Met DirectX kunt u ook multimediatoepassingen uitvoeren waarvoor hardwareondersteuning vereist is die niet beschikbaar is deze computer. In dit geval worden ze in software geëmuleerd door een component genaamd de Hardware Emulation Layer (HEL) en bieden ze softwarestuurprogramma's die fungeren als ontbrekende apparaten.

DirectX Media zit bovenop DirectX Foundation en biedt diensten van hoog niveau: animatieondersteuning, streaming-uitvoer (de mogelijkheid om audio- en video-informatie te verzenden en te bekijken terwijl deze van internet wordt gedownload) en interactiviteit. Automatische integratie van de diensten op laag niveau die worden geleverd door de DirectX Foundation en de diensten op hoog niveau die worden geleverd door DirectX Media vereenvoudigt het proces van het maken en afspelen van multimedia-elementen, waardoor ontwikkelaars deze kunnen opnemen in hun toepassingen en webpagina's, waardoor interactieve multimedia-inhoud wordt geboden die voorheen niet beschikbaar was. Bovendien helpt DirectX Media het coördinatieprobleem op te lossen verschillende soorten multimedia-effecten, waardoor het gemakkelijker wordt om het afspelen ervan te synchroniseren. Naast deze twee kerncomponenten bevat Microsoft DirectX ook hoogwaardige componenten die multimediafunctionaliteit voor webtoepassingen bieden. Deze omvatten: NetMeeting - een hulpmiddel voor het organiseren van online groepsdiscussies en Windows Media Player - een hulpmiddel voor het verzenden van multimedia-inhoud via internet. Laten we kort de belangrijkste componenten bekijken

DirectX Foundation-componenten. Deze omvatten Microsoft DirectDraw, Direct3D(Directe en behouden modi), DirectInput, DirectMusic, DirectSound,

DirectSound 3D en DirectPlay. Deze programmeerinterfaces op systeemniveau

bieden efficiënte toegang tot verschillende computerapparatuur en zorgen voor echte hardware-onafhankelijkheid van applicaties, waardoor de problemen van de installatie van stuurprogramma's en incompatibiliteit van hardware- en softwareplatforms worden geëlimineerd.

Microsoft Direct3D is een interface voor het werken met 3D-videokaarten. De Direct3D-architectuur wordt weergegeven in figuur 1.5.

Win32-applicatie

Direct3D ondersteunt twee bedrijfsmodi: onmiddellijke modus en behouden modus. In de Immediate Mode biedt Direct3D ontwikkelaars hardware-ondersteuning voor gaming en multimediatoepassingen in de omgeving Microsoft Windows. Het stelt u in staat hardware-onafhankelijkheid te bereiken, ondersteunt schakelbare Z-buffering en Intel MMX-processorarchitectuur. In deze modus worden elementaire grafische primitieven direct geïmplementeerd, zonder het gebruik van uitvoeringsbuffers.

De Retained-modus maakt het gemakkelijker om 3D-werelden te creëren en te animeren door twee nieuwe functies te ondersteunen: animatie-interpolators met kleurovervloeiing, vloeiende objectbewegingen en meerdere verschillende soorten transformaties, evenals het opeenvolgend vullen van de 3D-meshstructuur

objecten (mazen), waardoor ze geleidelijk kunnen worden geladen externe servers. Hierdoor kunnen ontwikkelaars 3D-graphics effectief gebruiken zonder dat ze objectstructuren op een laag niveau rechtstreeks hoeven te manipuleren.

Opgemerkt moet worden dat Direct3D-applicaties op dezelfde manier communiceren met grafische apparaten, ongeacht de modus. Ze kunnen wel of niet software-emulatie gebruiken voordat ze toegang krijgen tot de HAL. In werkelijkheid is Direct3D nauw geïntegreerd met de DirectDraw-component, dus in figuur 1.2 wordt de hardware-abstractielaag HAL DirectDraw/Direct3D HAL genoemd. Direct3D Z-buffert en rendert oppervlakken, terwijl DirectDraw ze direct weergeeft. De Direct3D COM-interface is een interface voor DirectDraw.

DirectDraw is een geheugenbeheermanager die zorgt voor basisset functies voor grafische en multimediatoepassingen die worden uitgevoerd Windows-platform. In tegenstelling tot traditionele Windows-graphics gebruikt DirectDraw directe toegang om geheugen en grafische apparaten, terwijl volledige compatibiliteit met Windows-applicaties wordt gegarandeerd.

Figuur 1.6 toont de interactie tussen DirectDraw, de kernelcomponent van het besturingssysteem GDI (Graphics Device Interface), de Hardware Abstraction Layer (HAL) en de hardware-emulatielaag

(Hardware-emulatielaag, HEL). Zoals u kunt zien, bestaat DirectDraw onafhankelijk

mo van GDI en beide interfaces hebben de mogelijkheid om rechtstreeks toegang te krijgen tot grafische apparaten via hardware-onafhankelijke lagen. In tegenstelling tot GDI maakt DirectDraw geen gebruik van hardwarefuncties. Als specifiek apparaat ondersteunt de vereiste functies niet, DirectDraw probeert deze te emuleren met behulp van HEL. DirectDraw ondersteunt een breed scala aan beeldschermadapters - van eenvoudige monitoren te complex professionele apparaten. DirectDraw werkt op het niveau van grafische oppervlakken

de basis voor grafische functies en interfaces op hoog niveau en stelt u in staat de hardwaremogelijkheden van de apparaten te gebruiken of deze indien nodig te emuleren.

Win32-applicatie

tielaag (HEL)

Abstractielaag

Videokaart

Figuur 1.6 – Integratie van DirectDraw in het systeem

DirectInput is een interface voor verschillende apparaten invoer van informatie - toetsenbord, muis, joystick, evenals apparaten met force-feedback. Vergeleken met conventionele, standaardfuncties deze interface ondersteunt groter aantal apparaten en zorgt voor een snellere reactie op verzoeken. Door rechtstreeks met apparaatstuurprogramma's te werken, maakt DirectInput geen gebruik van het berichtensysteem van Microsoft Windows.

Nieuwe DirectInput-functies omvatten een uitgebreide lijst met ondersteunde apparaten, waaronder: gaming panelen(gamepads), luchtvaart

vluchtjukken, helmen virtuele realiteit(virtual reality-hoofddeksel)

En apparaten met feedback, die effecten bieden zoals trillingen, bewegingsweerstand, enz., waarvan het gebruik moderne games nog realistischer maakt.

DirectMuziek is nieuw onderdeel gezinnen DirectX-technologieën, een softwareshell voor het maken van muzikale sjablonen en instructies voor het reageren op gebruikersacties. Hierdoor kunnen ontwikkelaars creëren achtergrondmuziek in realtime op basis van algoritmen die zijn gespecificeerd in webpagina's of multimediatoepassingen. DirectMusic biedt een volledige implementatie van de DownLoadable Sounds (DLS)-standaard, waardoor ontwikkelaars muzieksjablonen kunnen maken die op vrijwel elk hardwareplatform kunnen worden afgespeeld. DirectMusic bevat DirectMusic Producer - een geïntegreerde editor waarmee u met alle DirectMusic-objecten kunt werken: stijlen, sjablonen, DLS-tools, enz.

DirectPlay is een programmeerinterface op hoog niveau tussen applicatieprogramma en communicatiediensten, die de communicatie via modem of lokaal netwerk. DirectPlay bevat een reeks hulpprogramma's waarmee spelers partners en websites kunnen vinden, de informatiestroom tussen servers kunnen ondersteunen, en dezelfde reeks functies wordt ondersteund voor elke gebruiker van de applicatie, ongeacht het type online-dienst of protocollen.

IN Naast de DirectX Foundation-interfaces op een laag niveau, bevat DirectX een reeks programmeerinterfaces op een hoger niveau

en DirectX Media-componenten, die ondersteuning bieden voor multimediatoepassingen, animatie en streaming-informatie-uitvoer. DirectX Media bestaat momenteel uit de volgende hoofdprogrammeerinterfaces:

DirectShow (vroeger gebeld ActiveMovieSDK); DirectAnimatie (vroeger gebeld ActiveX-animatie); DirectX-transformatie. Houd er rekening mee dat DirectX Media-services DirectX Foundation-services gebruiken.

Software-optimalisatie

Hardware-of softwareversnelling

Single-pass of multi-pass beeldvorming

Verschillende videoadapters gebruiken verschillende visualisatietechnologieën. Tegenwoordig voeren bijna alle videoadapters filtering en basisweergave in één keer uit, wat hogere framesnelheden mogelijk maakt. Videoadapters met single-pass rendering- en filtermogelijkheden zijn doorgaans sneller bij het werken 3D-programma's en vermijd vervormingen veroorzaakt door fouten in meerdere drijvende-kommaberekeningen tijdens het renderen.

Met hardwarerendering wordt een veel betere beeldkwaliteit en animatiesnelheid bereikt dan met softwarerendering. Gebruiken speciale chauffeurs, voeren de nieuwe videoadapters alle noodzakelijke berekeningen uit met voorheen ongehoorde snelheden. Om met applicaties te werken 3D-afbeeldingen, en ook voor moderne games is deze technologische oplossing simpelweg van onschatbare waarde.

Benadrukt moet worden dat de aanwezigheid van geavanceerde 3D-visualisatiefuncties in de videoadapter volkomen nutteloos is totdat game-ontwikkelaars en softwaretoepassingen optimaliseren hun producten niet om ten volle van dergelijke functies te profiteren.

Om de prestaties te verbeteren, moet u OpenGL, Direct 3D, RAMDAC, kloksnelheden en andere parameters.

De API (Application Programming Interface) geeft hardware- en softwareontwikkelaars de tools om stuurprogramma's en programma's te maken die sneller werken. grote hoeveelheden platforms.

Softwarestuurprogramma's zijn ontworpen om rechtstreeks met de API te communiceren, in plaats van met besturingssysteem en software.

Er zijn momenteel twee grafische API's: OpenGL (SGI) en Direct 3D (Microsoft).

Testvragen.

1. Wat zijn de belangrijkste soorten videosystemen die in computers worden gebruikt?

2. Definieer een videoadapter; bestaan ​​er soorten videoadapters?

3. Welke soorten maskers zijn er?

4. Waarom is demagnetiseren nodig bij CRT-monitoren?

5. Welke soort straling beïnvloedt de gezondheid van CRT-monitoren?

6. Welke giftige stoffen worden er gebruikt in CRT-monitoren?

7. Wat zijn de belangrijkste technische specificaties gebruikt voor LCD-monitoren?

8. Noem de technologieën van LCD-monitoren?

9. Welk ontwerp plasmapanelen?

10. Wat voordelen van OLED monitoren vergeleken met LCD-scherm-displays?

11. Uit welke onderdelen bestaat een videokaart?

12. Welke soorten videogeheugen worden in videokaarten gebruikt?

13. Waar wordt een 3D-versneller voor gebruikt?

14. Welke driedimensionale grafische technologieën bestaan ​​er?

Vorige week werd de Vulkan API geïntroduceerd en AMD en NVIDIA kondigden brede ondersteuning hiervoor aan. De nieuwe grafische interface is ontwikkeld door de Khronos Group, een consortium opgericht in 2000. Khronos Group is verantwoordelijk voor de ontwikkeling en ondersteuning open standaarden op het gebied van multimediatoepassingen op verschillende platforms en apparaten. Het consortium wordt ondersteund door AMD en NVIDIA, evenals vele andere bedrijven.

Vorige week is de definitieve versie 1.0 van de Vulkan API bekrachtigd. AMD en NVIDIA presenteerden hun respectievelijke bètastuurprogramma's. AMD heeft op 14 februari een bètaversie van Radeon Software vooraf uitgebracht. NVIDIA gepresenteerd GeForce-stuurprogramma 356.39, dat ook gericht is op ondersteuning van de Vulkan API.

De aanpak van de Vulkan API lijkt sterk op de Mantle API. Het punt is dat ontwikkelaars meer krijgen diepe toegang naar de hardware om er het maximale uit te halen. Met deze aanpak kunt u bestaande knelpunten zoveel mogelijk vermijden. Aan de andere kant moeten ontwikkelaars precies weten wat ze doen, bijvoorbeeld als ze met geheugen werken. De OpenGL-interface is niet zo populair als DirectX, maar je kunt er wel meer uit persen.

De Vulkan API in versie 1.0 wordt ondersteund op Windows 7, Windows 8.1, Windows 10, Android en Linux. Game-ontwikkelaars hebben nog geen ondersteuning voor specifieke games aangekondigd, maar het is de moeite waard om te wachten op de Games Developer Conference, die van 14 tot 18 maart in San Francisco wordt gehouden. Van game-engines is er nog steeds informatie over Source 2, die de Vulkan API al ondersteunt. Het foutopsporingsproces wordt eenvoudiger gemaakt door ondersteuning van Valve, LunarG en Codeplay.

Het Talos-principe

Oké, maar welke game of engine ondersteunt de Vulkan API? Het Talos-principe is ontwikkeld door Croteam, waarvan bekend is dat het in het verleden veel grafische API's ondersteunt. En in de nieuwste versie is het Talos-principe geen uitzondering: het ondersteunt DirectX 9, DirectX 11, OpenGL en nu Vulkan. Voor de ontwikkelstudio is Vulkan een proefballon, hoewel de Vulkan API beschikbaar is in versie 1.0, bevindt de ondersteuning zich nog in de bètafase. De Croteam-ontwikkelaars hebben ongeveer drie maanden besteed aan het toevoegen van ondersteuning. Maar het universele karakter van de API maakt het mogelijk om binnenkort een Linux-variant te introduceren.

De Vulkan API is theoretisch compatibel met verschillende platforms, maar tot nu toe kunnen tests en vergelijkingen alleen op Windows worden uitgevoerd, en dit heeft zijn beperkingen. De implementatie bevindt zich nog in een zeer vroeg stadium. Het DirectX 11-renderingpad is al vele jaren in ontwikkeling, dus er is geen ruimte voor optimalisatie. Hier hangt de situatie meer af van de stuurprogramma-ontwikkelaars, namelijk AMD en NVIDIA. Het Talos-principe was het eerste spel dat Vulkan ondersteunde. Daarom is het nog niet mogelijk om dit te doen vergelijkingstest om de goede of slechte implementatie van ondersteuning te evalueren.

Nieuwe technologieën worden eerst geïmplementeerd in voorbeelden die door fabrikanten zijn opgesteld. In het geval van DirectX 12 lag de nadruk op Draw Calls, dezelfde 3DMark DirectX 12-test is alleen gebaseerd op het meten van de prestaties van Draw Calls, DirectX-spellen 12, vergelijkbaar Star Wars, proberen ook een soortgelijke belasting te gebruiken. Maar het Talos-principe is er niet zozeer afhankelijk van hoge snelheid Draw Call zodat de API op laag niveau een groot verschil maakt.

Ondersteuning voor de Vulkan API versie 1.0 bevindt zich in de beginfase, en hetzelfde geldt voor AMD- en NVIDIA-stuurprogramma's. Beide stuurprogramma's zijn in wezen bètaversies, en dat is hoe GPU-fabrikanten ze zien. Er zijn meestal geen nieuwe prestatieverbeteringen of ondersteuning voor nieuwe technologieën, dus we krijgen een stapje terug. Maar zodra een bepaald ontwikkelingsniveau is bereikt, zullen de stuurprogramma's van beide GPU-ontwikkelaars Vulkan-ondersteuning krijgen in de definitieve versie. Wanneer dit zal gebeuren is niet geheel duidelijk. Maar voor nu belangrijkste toepassingen gebruik Vulkan en games niet API-ondersteuning bevinden zich in de bètastatus, zodat GPU-ontwikkelaars hun stuurprogramma's gemakkelijk kunnen verfijnen.

Voor het testen hebben we onze test systeem voor videokaarten. De drivers voor AMD- en NVIDIA-videokaarten hebben we hierboven al beschreven. We hebben de grafische instellingen op het maximale niveau gezet, maar hebben ook lage resoluties tot 1.280 x 720 pixels getest om de prestaties van Draw Call te verbeteren.

De Talos Principle-test - 1.280 x 720 pixels

De Talos Principle-test - 2.560 x 1.440 pixels

De Talos Principle-test - 3.840 x 2.160 pixels

Zoals je uit de resultaten kunt zien, geeft de Vulkan API een aanzienlijke stijging vergeleken met OpenGL. Maar eerder DirectX-prestaties 11 nieuwe API schiet tekort. Hiervoor zijn verschillende redenen. Aan de ene kant bevindt de ontwikkeling van Vulkan zich in een vroeg stadium. Dit geldt voor de API zelf, de driver en spellen De Talos-principe. Vergeleken met OpenGL nieuwe interface Hiermee kunt u bepaalde bronnen vrijmaken en knelpunten vermijden. Maar DirectX is al vele jaren aan het verbeteren huidige niveau. Het potentieel van de Vulkan API is in ieder geval zeer goed.

Als we in de details duiken, hebben we geen visuele verschillen gevonden tussen de Vulkan API en DirectX 11. Het weergavepad is dus zeer goed aangepast. Met de huidige implementatie van The Talos Principle ervaren videokaarten met 2 GB geheugen een prestatiedaling, waarschijnlijk als gevolg van niet de meest efficiënte manier om met geheugen te werken. Net als Mantle en DirectX 12 heeft de Vulkan API toegang tot geheugenbronnen op een dieper niveau - dit feit kan als een voordeel worden gezien, maar het kan ook een nadeel worden als ontwikkelaars het geheugen niet efficiënt kunnen gebruiken.

Ik was enigszins teleurgesteld door de fout in de stroming NVIDIA-stuurprogramma, waardoor het systeem na elke test opnieuw moest worden opgestart. Zonder opnieuw op te starten crashte het spel. Hoewel met AMD-stuurprogramma we hebben een dergelijke fout niet gevonden.

De huidige implementatie van de Vulkan API lijkt veelbelovend. Voorlopig zal het niet zo relevant zijn voor games op desktop-pc's, aangezien de markt voor DirectX 11 en 12 erg groot is en vergeleken met dezelfde DirectX 12 de implementatiekosten mogelijk te hoog zijn en de opbrengsten te klein. Maar als games op verschillende platforms met verschillende hardwarevereisten moeten draaien, kan Vulkan spelen belangrijke rol. We moeten in ieder geval wachten op een reactie van de game-ontwikkelaars, anders zitten we met een kip-en-ei-probleem waar moeilijk uit te komen is.

API's (Application Programming Interface) bieden hardware- en softwareontwikkelaars de middelen om stuurprogramma's en programma's te maken die sneller werken op een breed scala aan platforms. Softwarestuurprogramma's zijn ontworpen om rechtstreeks met de API te communiceren, in plaats van met het besturingssysteem en de software.

Er zijn momenteel twee grafische API's: OpenGL (SGI) en Direct 3D (Microsoft).

Hoewel fabrikanten van videoadapters de OpenGL-standaard ondersteunen, Microsoft-bedrijf biedt Direct3D-ondersteuning voor een uitgebreidere API genaamd DirectX.

DirectX 9 en hoger zijn de nieuwste versies van de software-interface, die de ondersteuning voor 3D-graphics uitbreidt en verbeterde gamingmogelijkheden biedt. Voor meer informatie over DirectX of om de nieuwste versie te downloaden, gaat u naar de DirectX-website van Microsoft: www.microsoft.com/directx.

CrossFire of sli

Als reactie op de ontwikkeling en promotie van de oud-nieuwe SLI-technologie (MK nr. 30(357) 2005) door NVIDIA, ontwikkelde en implementeerde de belangrijkste concurrent op de videoversnellermarkt, ATI, zijn eigen soortgelijke oplossing: CrossFire-technologie. Net als SLI van NVIDIA kunt u hiermee de bronnen van twee videokaarten in één computer met elkaar combineren, waardoor de prestaties van het videosubsysteem worden verbeterd. CrossFire-technologie verschilt fundamenteel van SLI en heeft daarom weinig gemeen met zijn concurrent. Door de voorkeur te geven aan bepaalde voordelen van de ene of de andere technologie, zullen gebruikers in de nabije toekomst kiezen tussen NVIDIA en ATI, niet alleen op basis van meningen over merken die door de jaren heen zijn gevormd, maar ook op basis van feiten over SLI- of CrossFire-technologieën.

Technische basis

Naar analogie met NVIDIA heb je, om twee ATI-videokaarten in één "harnas" te plaatsen, een moederbord nodig met een chipset van dezelfde fabrikant (het is de bedoeling dat de Intel i975X-chipset ook CrossFire ondersteunt), met twee slots PCI Express. Net als SLI vergt CrossFire veel systeembronnen, waarvoor een hoogwaardige stroomvoorziening nodig is. Laten we de systeemvereisten in meer detail bekijken.

Moederbord. Moeder moet op een chipset zijn gebaseerd ATI Radeon Xpress 200 CrossFire. Deze kaarten zijn beschikbaar voor zowel AMD Sempron/Athlon 64- als Intel Pentium 4/Celeron-processors. ATI gaat nu dus geld verdienen aan chipsets, waarvan de productie nog niet eerder op grote schaal heeft plaatsgevonden.

Videokaarten. Om de technologie te laten werken, heb je een CrossFire-masterkaart nodig (meer hierover hieronder) en een andere videokaart op basis van een chip uit dezelfde familie als de hostkaart. Wat de masterkaart van anderen onderscheidt, is de aanwezigheid van een DMS-59-connector (verbonden met DVI op de slave-kaart), een CrossFire-chip en natuurlijk de kosten.

Vermogenseenheid. Om zo'n serieuze set te onderhouden, heb je een voeding nodig met een minimaal vermogen van 400-450 W, bij voorkeur krachtiger.

Nou, dat is eigenlijk alles wat je nodig hebt om een ​​videosysteem samen te stellen Kruisvuur. Zoals u hebt gemerkt, is ATI flexibeler ten opzichte van haar klanten en bindt ze ze niet als land aan een collectieve boerderij aan de verplichte aankoop van twee kaarten met dezelfde chip van dezelfde fabrikant. De binding wordt alleen uitgevoerd met de familie van de videochip waarop de versneller is gebaseerd. Dat wil zeggen dat u een toonaangevende Radeon X800-videoversneller en een slave Radeon X800 XL kunt aanschaffen. Master Radeon X800 zal compatibel zijn met kaarten van elke fabrikant, op basis van elke wijziging van de X800-chip. Dit is een absoluut voordeel ten opzichte van de concurrent: als je één accelerator neemt, met het vooruitzicht op verdere modernisering door het installeren van een andere videokaart, hoef je niet te zoeken naar een kaart van een specifieke fabrikant op basis van een specifieke chip. Momenteel wordt CrossFire-technologie ondersteund door videokaarten gebaseerd op de X800 en X850, evenals door nieuwe producten gebaseerd op de X1xxx.