Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 42 reacties
Submitter: MacWolf

De Khronos Group heeft de afgeronde specificatie van OpenGL 4.1 vrijgegeven. Het technologieconsortium stelt dat de nieuwe revisie van OpenGL het porten van 3d-programmacode tussen desktop en mobiel gemakkelijker zal maken.

Versie 4 van OpenGL biedt al ondersteuning voor tesselation en shaders, en 64bits double precision floating point-shaderberekeningen, maar vereist wel een DirectX 11-compatibele videokaart. Met de update van de 3d-api naar 4.1 moet OpenGL gaan beschikken over betere foutafhandeling en ondersteuning voor het aanmaken van shader programs. Hierdoor kan een ontwikkelaar met behulp van een OpenGL-driver een gpu geoptimaliseerd aansturen.

Volgens Khronos verbetert versie 4.1 ook de crossplatform-mogelijkheden van OpenGL. OpenGL wordt vooral op pc's gebruikt, terwijl OpenGL ES vooral in embedded systemen wordt gebruikt, zoals op de PS3 en mobiele telefoons. Voorheen bestonden er kleine verschillen tussen de twee, maar in versie 4.1 is OpenGL geheel compatibel met OpenGL ES 2.0. Hierdoor moet het porten van code tussen verschillende platforms eenvoudiger worden.

WebGL, dat kan worden toegepast om 3d-graphics in webpagina's te tonen, biedt meer mogelijkheden om untrusted code veilig in de browser te draaien. Nvidia en ATI hebben aangegeven dat ze op korte termijn OpenGL 4.1-drivers zullen uitbrengen. Het is nog onduidelijk of Apple een update voor zijn OpenGL-OS X gaat uitbrengen.

Moderatie-faq Wijzig weergave

Reacties (42)

Met de update van de 3d-api naar 4.1 moet OpenGL gaan beschikken over betere foutafhandeling en ondersteuning voor het aanmaken van shader programs.
Even iets specifieker uitgelegd:

Voorheen was je in OpenGL gelimiteerd aan het maken van shader programma's die alle programmable stages van de pipeline omvatten. Je kon in OpenGL een programma maken waarin een vertex shader, een geometry shader en fragment shaders waren opgenomen (en ook shaders voor programmable tessellations stages, net als bij DirectX 11). Er ontstond echter een probleem wanneer je vertex shader A zowel met fragment shader B als C wilde gebruiken. Je moest dan twee verschillende programma's maken die de gehele programmable pipeline omvatten (omdat de shader stages allemaal aan elkaar gelinkt waren).

Met OpenGL 4.1 kun je binaries maken per shader stage waarmee je kunt mix-and-matchen. Kortom, je geeft aan dat je vertex shader A wil gebruiken en fragment shader B. Of fragment shader C, of D, of.... Je hoeft die dan niet meer aan elkaar te linken. Dit geeft de programmeur meer vrijheid.
Nog een kleine nuance: Het is niet zo dat je op source niveau vast zit aan alles in 1 programma te verwerken. Je schrijft je vertex, fragment en geometry programs over het algemeen nog steeds in aparte files. Echter maak je m.b.v. de GLSL compiler hier tijdens runtime 1 "binary" van die door de GPU wordt gebruikt. Je kan dus dezelfde vertex program source gebruiken in combinatie met verschillende fragment program sources. Dit betekent echter dat tijdens runtime je voor elk van deze fragment programs een kopie hebt van je vertex program. De aanpassing die nu in GL4.1 zit betekent dat je tijdens runtime maar een enkele versie van dat vertex program in het geheugen hoeft te houden, wat dus weer geheugen gebruik scheelt.
Als OpenGL en OpenGL ES nu volledig compatibel zijn, heeft het dan nut om beide te behouden? :?
OpenGL ES is een subset van OpenGL. Alle OpenGL ES code werkt dus op OpenGL compatible systemen maar niet noodzakelijkerwijs andersom omdat OpenGL uitgebreider is.

Als je dus een applicatie wil bouwen die zowel op mobiel als op volledige PC's moet werken gebruik je alleen OpenGL ES functies en weet je zeker dat het ook werkt op OpenGL systemen.
OpenGL ES (2.0 dan) is nu een subset van OpenGL (4.1), OpenGL ES 2 code draait dus op een OpenGL 4.1 provider (meestal de driver). Hiervoor kon dat dus soms niet door (kleine) verschillen in functiegedragingen, -aanroepen of missende functies in een van beide API's.

Overigens geldt dit niet voor OpenGL ES 1.x, deze is behoorlijk verschillend van 2.x, doordat de latere programmeerbaar is; vergelijkbaar met het verschil tussen Direct3D 7 en Direct3D 8
Uit het artikel:
OpenGL wordt vooral op pc's gebruikt, terwijl OpenGL ES vooral in embedded systemen wordt gebruikt, zoals op de PS3 en mobiele telefoons.
Dus ik denk dat OpenGL ES gewoon dezelfde code verwerkt, maar dat op een andere manier doet, op een manier zodat het op minder krachtige apparaten gebruikt kan worden. Dus dezelfde code gebruiken, maar het op een (minder resources kostende?) manier draaien.

[Reactie gewijzigd door jacobras op 27 juli 2010 13:30]

OpenGL ES is een subset van Open GL. Op deze manier is het makkelijk om Open GL ES applicaties te poorten naar bijv. de PC. Open GL heeft dus alle features van Open GL ES en nog een aantal extra features die nog niet mogelijk zijn op embedded systemen.
Compatibel betekend niet per definitie dat ze hetzelfde zijn.
ES is bedoeld voor embedded systems. Zie het als het verschil tussen mobiele webbrowsers en pc webbrowsers. Ze kunnen beiden hetzelfde maar zijn bedoeld voor verschillende apparaten.
Het verschil zit em in het aantal functies wat de API moet aanbieden. Een ES versie heeft een kleinere set dan de volledige. Voorheen was ook de werking van de twee API sets soms verschillend, dat is nu gelijk getrokken.
compaticle betekend niet dat het identiek is. Het is handig om een verschil te houden tussen PC en mobile applicaties want deze hebben andere eisen/mogenlijkheden.
Dit betekent simpelweg dat de API gelijk is getrokken. Onder de motorkap is het anders, maar de bovenlaag is hetzelfde.
Nou ik denk niet dat telefoons al tesselation aankunnen dus laat het maar mooi los van elkaar :P (etc etc)
Het lijkt me niet meer dan logisch dat Apple zal volgen, ze komen steeds meer in beeld als een vervanging van de standaard Windows PC niet alleen hebben ze een OS dat de vergelijking met Windows op veel vlakken goed doorstaat. Maar ook zien ze de gebruikers aantallen groeien en het aantal games en andere normaal alleen aan Windows voorbehouden kleine onafhankelijk ontwikkelde applicaties lijken steeds vaker ook of zelfs alleen voor OS X beschikbaar te komen.

Het lijkt me dat voor veel ontwikkelaars het gelijk trekken van OpenGL en OpenGL ES een fijne gewaarwording is. Ik hoor zo af en toe een developer eens flink zijn ongenoegen spuien over het werk dat nodig is om van de een naar de andere oplossing te schakelen dus ik kan me zo voorstellen dat dit voor redelijk wat mensen een heleboel hoofdpijn zal wegnemen.
Het lijkt me niet meer dan logisch dat Apple zal volgen [...]
Que?

Als je bedoelt dat Apple wel zal volgens met het implementeren van OpenGL 4.1 in OS X, ja dat lijkt me nogal evident. Ze zijn onderdeel van het OpenGL consortium, voortrekkers in de nieuwere gerelateerde standaarden zoals OpenCL, hun mobiele platforms draaien op OpenGL ES, en OS X is volledig om OpenGL heengebouwd.

Of je bedoelt iets anders maar dan mis ik het punt even.
Ik neem aan dat hij reageert op het artikel dat schrijft
Het is nog onduidelijk of Apple een update voor zijn OpenGL-OS X gaat uitbrengen.
Het lijkt me inderdaad niet zozeer een vraag of maar eerder wanneer Apple een update in hun OpenGL ondersteuning uitbrengt. De laatste tijd is Apple erg actief aan het sleutelen aan hun OpenGL ondersteuning in Snow Leopard. Zeer waarschijnlijk is dat in een stroomversnelling geraakt sinds duidelijk werd dat Steam naar OS X zou komen.
Wellicht is Starcraft 2 ook een goede motivator ;)

Maar ik denk inderdaad dat steam en de games die daar bij horen / in vergelijking met windows tegenvallende framerates Apple inderdaad wel even wakker geschrikt heeft. Natuurlijk geen goede reclame dat wanneer er eindelijk eens games zijn deze een stuk slechter draaien.
Het is te hopen dat dit ook goed nieuws betekent voor de performance van games onder OSX, want die is meestal een stuk trager aangezien de meeste games geoptimaliseerd zijn voor DX van oorsprong.
Hopelijk zal Apple volgen. Helaas hebben ze nog steeds niet de gehele OpenGL 3.0 API geļmplementeerd en die is al een aardige tijd uit. Ook weet ik zeker dat Apple nog veel werk kan steken in de drivers, want de performance loopt vaak toch wel aanzienlijk achter bij Windows. Wel zag ik op de videos van afgelopen WWDC dat Apple een voormalig id Software medewerker in dienst heeft genomen, dus ik heb hoop dat Apple wat meer werk gaat maken van haar OpenGL implementatie - ze worden immers steeds serieuzer m.b.t. games.
id Software was vroegah ook een van de grote pleitbezorgers van OpenGL, met GL quake, those where the days met mn voodookaartje lekker quake 1 tegen bots spelen ;-)
Wat is het verschil tussen OpenGL en Direct-X? Of is dat heel iets anders? :?
DirectX is van Microsoft. OpenGL is opensource. Ze doen in principe hetzelfde hoor, mits kleine andere details.
OpenGL is een open standaard. Er is geen source en daarom is het ook geen open source.
En uiteraard is onderdeel van die standaard de OpenGL SDK, wat weldegelijk code is:
http://www.opengl.org/sdk/
En dus? Er is ook een SDK voor DirectX. Een SDK is gewoon een toolbox voor de programmeur, maar heeft niets met de source code te maken.
@.oisyn er is wel degelijk een excecutable deel DirectX en OpenGL dat bij OpenGL opensource is. De SDK heeft hier idd niets mee te maken.
Die SDK is helemaal geen onderdeel van de standaard. Nergens in de OpenGL standaard wordt gerefereerd aan die SDK. De SDK is gewoon een community driven library met OpenGL handigheidjes, maar staat verder geheel los van de standaard. Zo'n zelfde SDK kun je ook gewoon voor Direct3D vrijgeven, en wellicht dat Microsoft het dan ook wil hosten op haar site. Maakt dat Direct3D dan ineens open source?

@Stevendefeij:
er is wel degelijk een excecutable deel DirectX en OpenGL dat bij OpenGL opensource is
Waar kan ik die downloaden dan? OpenGL wordt typisch geļmplementeerd door de videokaart fabrikanten zelf, daar is meestal maar weinig open source aan. Daarentegen zou je ook een open source Direct3D implementatie kunnen maken, zoals swShader ook ooit was

[Reactie gewijzigd door .oisyn op 27 juli 2010 17:17]

OpenGL is geen opensource, OpenGL is een open standaard. Deze standaard wordt beheerd door een consortium, terwijl de DirectX standaard gesloten is, deze wordt beheerd door Microsoft.

Overigens kunnen OpenGL en DirectX vrijwel hetzelfde. De een heeft wat voordelen boven de ander (dat geldt beide kanten op).

OpenGL is cross-platform, je kunt het ook onder Linux en MacOSX gebruiken. Ja, je kunt ook OpenGL 4.1 onder WindowsXP draaien (en dus beschikken over graphics capabilities die gelijk zijn aan DirectX 11 onder Windows XP).
DirectX is een collectie van subsystemen. Ik wil hier niet mierenn**ken maar wat je bedoelt is waarschijnlijk Direct3D en DirectDraw, de grafische subsystemen van DirectX.

Ik ben blij dat er weer werk in OpenGL gestoken wordt, of dat dit meer aan het oppervlak verschijnt. Laatste jaren kwam DIrect3D steeds meer in opmars, maar dit lijkt na 9.0C gestagneerd te zijn. Er worden nog steeds niet of nauwelijks applicaties gemaakt die D3D10 of D3D11 gebruiken. Ik hoop dat OpenGL hierop in kan springen en het gat weer kan dichten (qua technologie) en weer wat marktaandeel kan herwinnen in de PC-Windows markt.
DirectDraw bestaat overigens al sinds DX8 niet meer. De nieuwe hardware accelerated "2D" API voor vector graphics heet Direct2D.
OpenGL is vergelijkbaar met Direct3D, wat 1 van de vele onderdelen is van DirectX, een verzameling API's om makkelijker games te programeren
Misschien is dat wel het belangrijkste verschil:

DirectX is vooral bedoeld voor games, en OpenGL voor o.a. CAD / renderen.
Natuurlijk wordt DirectX nu ook voor CAD gebruikt en OpenGL voor games,
maar juist de CAD-boeren hebben jarenlang tegengehouden dat OpenGL dusdanig werd gemoderniseerd zodat er ook mooie games mee gemaakt kunnen worden.

Na een storm van protest is dat era gelukkig nu ten einde, zo lijkt het, en krijgt OpenGL eindelijk de features die het nodig heeft om Microsoft bij te halen.
DirectX is de API van Microsoft en is alleen voor Windows. Waar OpenGL opensouce en dus ook op Linux, Mac en Windows gebruikt kan worden.
Waar OpenGL opensouce en dus ook op Linux, Mac en Windows gebruikt kan worden.
OMG talk about klok en klepel zeg. Denk je nu echt dat als ik de source van mijn Windows-only app vrijgeef onder een Open Source licentie dat die app dan ineens cross-platform wordt?

Open Source betekent dat de source code van de applicatie is gepubliceerd (vrijgegeven) onder een licentie die iedereen het recht geeft deze vrijelijk te gebruiken en aan te passen. Het zorgt er niet ineens magisch voor dat de app:
  • Stabieler is
  • Cross-platform is
  • Veiliger is
  • Meer interoperabel / compatible met andere apps is
  • Etc etc wat voor een magische voordelen Open Source zou brengen
Het is wachten op de dag dat gamemakers op alle platformen in OpenGL hun games gaan aanbieden. Eigenlijk is het dus wachten op de dag dat open standaarden de computerwereld regeren... zucht...
Dat valt met DirectX best mee. Veel grote developers en videokaart bakkers hebben veel inspraak in hoe DirectX (gaat) werken. Datzelfde geld ook voor Open-GL.
Maar voor DirectX heb je WIndows nodig. Daar hebben de Mac en Linux gebruikers weer niets aan. Vroeger bestond er alleen OpenGL, voor zware grafische werkstations. Microsoft heeft met DirectX in eerste instantie een veel fijnere en minder zware 3D API geļntroduceerd terwijl de OpenGL mensen rustig achterover leunend niks deden. Ook niet toen DirectX qua features en marktaandeel voor begon te lopen. Het is pas weer sinds een paar jaar dat er wat schot zit in de ontwikkeling van OpenGL. Laten we hopen dat dat zo door gaat en er eindelijk weer een serieuze cross-platform concurrent voor DirectX komt.
Dan moet je maar bootcamp hebben en voor linux maar wine gebruiken :P problem solved (gedeeltelijk dan).
bootcamp -> licensie nodig... geen oplossing
Vermoedelijk gaat dat voor de mobiele markt wel gelden,
enorm veel mobiele apparaten ondersteunen OpenGL ES, maar er zijn er maar bitter weinig die de desktop-implementatie van DirectX ondersteunen.
En hoeveel nieuwe 3D games komen er uit op mobieltjes?

De route andersom is interessanter, je succesvolle PC game uit 2007 porten naar iPhone en MeeGo en nogmaals verkopen. Dit gebeurt dus ook veel. Maar om een 3D game te gaan targeten voor mobieltjes gebeurt nog vrijwel niet. Ook op de DS en PSP zie je vooral klonen van de games die op de consoles en op de PC draaien.
dont hold your breath on that ....

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True