Tutorials

▷ Opengl: wat is het en waar is het voor

Inhoudsopgave:

Anonim

Heeft u ooit van OpenGL gehoord? Het werd al snel de toonaangevende realtime grafische API in de branche, omdat het in feite de enige was die beschikbaar was op meerdere platforms. Vandaag brengen we je dit artikel waarin we uitleggen wat OpenGL is en waar het voor is.

Inhoudsindex

Geschiedenis

In de jaren 80 was het ontwikkelen van software die compatibel was met een breed scala aan hardware gerelateerd aan de grafische wereld een echte uitdaging voor ontwikkelaars. Je kreeg te maken met heel verschillende interfaces en schreef specifieke stuurprogramma's voor elk type hardware, wat erg duur was, daarom werden teams van programmeurs uitbesteed om de ontwikkeling te versnellen. Omdat elk team afzonderlijk aan hun interfaces werkte, werd er veel redundante code geproduceerd. In 1992 leidde SGI de oprichting van de OpenGL Architecture Review Board (OpenGL ARB), een groep bedrijven die de specificatie in de daaropvolgende jaren zou onderhouden en uitbreiden. OpenGL is geëvolueerd van IRIS GL en overwon het hardware-afhankelijkheidsprobleem door software-emulatie aan te bieden voor die niet-ondersteunde functies. Toepassingen zouden dus geavanceerde grafische afbeeldingen kunnen gebruiken op relatief zwakke systemen.

Om te begrijpen wat OpenGL is, moeten we eerst weten wat een API is.

Wat is OpenGL, wat is een API?

Een API of Application Programming Interface is een set codes die kan worden gebruikt om verschillende applicaties met elkaar te laten communiceren. Het is iets dat een taak uitvoert die vergelijkbaar is met de gebruikersinterface om de interactie tussen persoon en programma te bevorderen, alleen, alleen toegepast en uitsluitend binnen de softwareomgeving. Het wordt gebruikt om codes of functies tussen verschillende platforms te verbinden, zodat u kunt profiteren van de diensten van de ene website op de andere.

Wat is OpenGL?

Het wordt voornamelijk beschouwd als een API die ons een geweldige reeks functies biedt die we kunnen gebruiken om 3D- en 2D-afbeeldingen en -afbeeldingen te manipuleren. Op zichzelf is het echter niet zomaar een API, maar een specificatie, ontwikkeld en onderhouden door de Khronos Group. Het wordt ook gebruikt voor de ontwikkeling van videogames, waar het concurreert met Direct3D op het Microsoft-platform.

Specificeert precies wat de uitvoer van elke functie zou moeten zijn en hoe deze zou moeten werken. Aangezien de OpenGL-specificatie geen implementatiedetails biedt, kunnen de daadwerkelijk ontwikkelde versies verschillende implementaties hebben, zolang hun resultaten voldoen aan de specificatie (en dus hetzelfde zijn voor de gebruiker).

Ontwikkelaars van OpenGL-bibliotheken zijn meestal de fabrikanten van grafische kaarten. Elke GPU ondersteunt specifieke versies van deze API, dit zijn de OpenGL-versies die speciaal voor die grafische kaart zijn ontwikkeld. Als ze bijvoorbeeld een systeem van een bedrijf als Apple gebruiken, onderhouden ze de OpenGL-bibliotheek en onder Linux is er een combinatie van versies van grafische providers en aanpassingen voor deze bibliotheken. Dit kan betekenen dat wanneer OpenGL vreemd gedrag vertoont dat dit niet mag, het hoogstwaarschijnlijk de schuld is van de fabrikanten van grafische kaarten. Telkens wanneer er een fout optreedt in de implementatie, wordt dit meestal opgelost door de stuurprogramma's van de grafische kaart bij te werken. Die stuurprogramma's bevatten de nieuwste versies die uw GPU ondersteunt. Daarom wordt het altijd aanbevolen om de stuurprogramma's bij te werken.

OpenGL-doelen

De belangrijkste doelstellingen zijn:

  • Verminder de complexiteit van de interface met de verschillende grafische kaarten en presenteer de programmeur met een unieke en uniforme API. Verberg de verschillende mogelijkheden van verschillende hardwareplatforms , waarbij alle implementaties de volledige set OpenGL-functies moeten ondersteunen (indien nodig met behulp van software-emulatie).

De basisbewerking van OpenGL is het accepteren van primitieve acties zoals punten, lijnen en polygonen en deze om te zetten in pixels. Dit proces wordt uitgevoerd door een grafische pijplijn die bekend staat als de OpenGL State Machine. De meeste OpenGL-opdrachten voeren primitieve bewerkingen uit om de segmentatie van grafieken te tekenen. Tot de release van versie 2.0 werd elke fase van de segmentatie uitgevoerd in een gevestigde functie, wat resulteerde in weinig configureerbaarheid. Vanaf deze versie zijn verschillende fasen volledig programmeerbaar met GLSL.

Extensies

Een zeer interessante geweldige functie is de extensie-ondersteuning. Telkens wanneer een bedrijf van GPU's een nieuwe technologie of een nieuwe manier van optimalisatie introduceert om 3D-afbeeldingen weer te geven , wordt dit in een extensie geïmplementeerd in de stuurprogramma's. Als de hardware waarop een applicatie draait deze extensie ondersteunt, kan de ontwikkelaar de functionaliteit van de extensie gebruiken om geavanceerdere of efficiëntere graphics te verkrijgen. Op deze manier kan een ontwikkelaar van videogames deze nieuwe renderingtechnieken gebruiken zonder te hoeven wachten tot OpenGL de functionaliteit in toekomstige versies opneemt, simpelweg door te controleren of de grafische kaart de extensie ondersteunt. Wanneer een extensie populair of erg nuttig is, wordt deze vaak onderdeel van toekomstige versies van OpenGL.

WIJ RADEN U AAN Mad Max geeft ondersteuning voor Vulkan vrij in zijn nieuwe openbare bèta voor Linux

OpenGL-evolutie

In maart 2015 werd de Vulkan API geïntroduceerd als de opvolger van OpenGL tijdens de Game Developers Conference. Aanvankelijk bekend als "Next Generation OpenGL" of "glNext", is de programmeerinterface open source en platformonafhankelijk. Het verschil met OpenGL is dat er tijdens het programmeren meer aandacht wordt besteed aan hardware, wat het vermogen aanzienlijk vergroot. Sommige pc-games ondersteunen Vulkan al, maar de meeste gebruiken DirectX. Vulkan is ook ontwikkeld door de Khronos Group.

We raden u aan de beste grafische kaarten op de markt te lezen.

Tot zover ons artikel over OpenGL, hopelijk heb je begrepen waar het uit bestaat en meer. Hoe dan ook, je kunt eventuele vragen achterlaten in de reacties.

Tutorials

Bewerkers keuze

Back to top button