OpenGL

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
OpenGL
OpenGL
Computerspellen outsourcen de real-time renderingsberekeningen naar de GPU over OpenGL. De gerenderde resultaten worden niet teruggezonden naar hoofdgeheugen, maar in plaats daarvan naar de framebuffer van het videogeheugen. De beeldcontroller zal dan deze data doorsturen naar het scherm.
Computerspellen outsourcen de real-time renderingsberekeningen naar de GPU over OpenGL. De gerenderde resultaten worden niet teruggezonden naar hoofdgeheugen, maar in plaats daarvan naar de framebuffer van het videogeheugen. De beeldcontroller zal dan deze data doorsturen naar het scherm.
Ontwikkelaar Khronos Group
Recentste versie 4.6 
(31 juli 2017)
Status Actief
Besturingssysteem Multiplatform
Geschreven in C
Categorie Video
Licentie Opensourcelicentie en andere [1]
Website (en) Projectpagina
Portaal  Portaalicoon   Informatica
Vrije software

OpenGL (Open Graphics Library) is een programmeertaal-onafhankelijke, multi-platform, Application programming interface voor 2D en 3D vectorafbeeldingen te genereren. De API wordt typisch gebruikt om via een grafische processor oftewel Graphics processing unit (GPU) hardware-versnelde beelden te genereren. In plaats van elke pixel apart uit te laten rekenen door de CPU en dit videosignaal naar de grafische kaart te transporteren, worden complete objecten, cameraposities en lichtinstellingen aan de GPU geleverd. De GPU gaat daarna zelfstandig het beeld punt voor punt berekenen en dat beeld wordt uiteindelijk naar de monitor gestuurd. Voorheen werd de grafische kaart enkel gebruikt om het beeld op de monitor te laten verschijnen.

Geschiedenis[bewerken]

OpenGL ontstond in 1992 uit het door Silicon Graphics Inc. ontwikkelde IRIS GL. Silicon Graphics Inc. begon OpenGL te ontwikkelen in 1991 en bracht de eerste versie uit in Januari 1992.

Vanaf 2006 werd de ontwikkeling overgenomen door het Non-profit technologieconsortium Khronos Group.
Het wordt momenteel ontwikkeld door Khronos Group.

Voorbeeld[bewerken]

Om een aantal stuiterende ballen op het scherm te tonen zou een applicatie zonder OpenGL voor alle punten op het scherm (al snel 1,3 miljoen) moeten berekenen of een deel van één van de ballen op die pixel zichtbaar zou zijn. Ook moet gekeken worden welke bal dichter bij de kijker is. Daarna moet er berekend worden welke belichting dat punt ontvangt, zodat de kleur goed is. Daarna kan de pixel verstuurd worden naar de grafische kaart.

Met OpenGL zal een applicatie eerst de camerapositie en de lichtinstellingen doorsturen naar de GPU. Daarna moeten alleen de posities en andere eigenschappen van de ballen naar de GPU gestuurd worden. De GPU zorgt verder voor het grafische rekenwerk. De CPU kan verdergaan met ander rekenwerk.

Gebruik[bewerken]

Toepassingen waar veel gebruikgemaakt wordt van OpenGL zijn simulatoren, CAD (AutoCAD), foto en videobewerkingsprogramma's (Adobe After Effects) en computerspellen waarin regelmatig hele werelden realistisch nagebouwd zijn, maar ook programma's om complexe moleculen te bekijken.

Met behulp van WebGL is het mogelijk 3D-computergraphics weer te geven in een webpagina. OpenGL wordt ondersteund door Google Chrome en Mozilla Firefox.

Versiegeschiedenis[bewerken]

De eerste versie van OpenGL, versie 1.0, werd vrijgegeven in Januari 1992 door Mark Segal en Kurt Akeley. Sindsdien is OpenGL uitgebreid in nieuwe versies. Nieuwe uitgaven definiëren een nieuwe basisset van functies die alle grafische kaarten moeten ondersteunen, en waarmee nieuwe uitbreidingen gemakkelijker geschreven kunnen worden. Elke nieuwe versie bouwt ook verscheidene nieuwe uitbreidingen in die veel ondersteuning genieten bij grafische kaart leveranciers, bij promotie van een uitbreiding kan die veranderen.

Overzicht[bewerken]

  • OpenGL 1.1 - Textuur objecten
  • OpenGL 1.2 - 3D texturen, BGRA and packed pixel formaten
  • OpenGL 1.3 - Multitexturering, multibemonstering, textuurcompressie
  • OpenGL 1.4 - Dieptetexturen
  • OpenGL 1.5 - Vertex Buffer Object (VBO), Occlusion Queries
  • OpenGL 2.0 - GLSL 1.1, MRT, Niet machten van twee texturen, Punt Sprites, tweezijdig stencil
  • OpenGL 2.1 - GLSL 1.2, Pixel Buffer Object (PBO), sRGB Texturen
  • OpenGL 3.0 - GLSL 1.3, Texture matrices, Conditionele rendering, Frame Buffer Object (FBO)
  • OpenGL 3.1 - GLSL 1.4, Instancing, Textuur Buffer Object, Uniform Buffer Object, Primitive herstart
  • OpenGL 3.2 - GLSL 1.5, Geometrie Shader, Meer bemonsterde texturen
  • OpenGL 3.3 - GLSL 3.30 Werk zoveel mogelijk functionaliteit als mogelijk terug van de OpenGL 4.0 specificatie
  • OpenGL 4.0 - GLSL 4.00 Tessellatie op de GPU, shaders met 64-bit precisie
  • OpenGL 4.1 - GLSL 4.10 Ontwikkellaarsvriendelijke debug uitvoer, compatibiliteit met OpenGL ES 2.0
  • OpenGL 4.2 - GLSL 4.20 Shaders met atomische tellers, teken transformeer terugkoppeling geïnstantieerd, shader packing, prestatieverbeteringen
  • OpenGL 4.3 - GLSL 4.30 Compute shaders die gebruik maken van GPU parallellisme, shader opslag buffer objecten, hoger-kwaliteit ETC2/EAC textuurcompressie, verhoogde geheugenveiligheid, a multi-applicatie robuustheidsuitbreiding, compatibiliteit met OpenGL ES 3.0
  • OpenGL 4.4 - GLSL 4.40 Buffer plaatsingscontrole, Efficiënte Asynchrone Queries, Shader Variable Layout, Efficiënte Meerdere Objecten Binding, gestroomlijnd overzetten van Direct3D applicaties, Bindloze textuuruitbreiding, ijle Textuuruitbreiding
  • OpenGL 4.5 - GLSL 4.50 Directe toestandstoegang (DSA), Flush Controle, Robuustheid, OpenGL ES 3.1 API en shader compatibiliteit, DX11 emulatie functionaliteit
  • OpenGL 4.6 - GLSL 4.60 Meer efficiëntere verwerking van geometrie en shader uitvoering, meer informatie, een no error context, polygoon verschuiving klem, SPIR-V, anisotropic filtering

Vulkan[bewerken]

Vulkan, vroeger ook "Next Generation OpenGL Initiative" (glNext) genoemd, is de volledige herontworpen opvolger van OpenGL. Vulkan is ook gemaakt om OpenGL en OpenGL ES samen te smelten in een gezamenlijke API die niet compatibel is met bestaande OpenGL versies.[2][3][4]

De eerste versie van de Vulkan API werd vrijgegeven op 16 februari 2016.[5][6]

Zie ook[bewerken]

Externe link[bewerken]