Ik zou zeggen, maak eens een spel met Direct X dat eruit ziet alsof je een Doom3 engine hebt wat op een Geforce2 kan draaien...
Je lult natuurlijk enorm uit je nek.. het ergste is dat je waarschijnlijk beter weet. Je weet net zo goed als ik dat HalfLife2 aparte renderpaden heeft voor aparte versies van DirectX.
Je kan net zo makkelijk (of makkelijker zelfs, je hoeft niet met de soms absurde verschillen tussen verschillende DirectX versies om te gaan) met OpenGL verschilldende renderpaden maken. Dat Carmack dit minder doet voor Doom3 wil niet zeggen dat het niet kan. De man richt zich nou eenmaal op meer highend systemen dan ze bij Valve doen.
Je doet haast alsof de shaders die in HalfLife2 zitten niet gewoon net zo makkelijk in OpenGL gebruikt kunnen worden. Je hebt precies hetzelfde niveau van toegang tot de verschillende shader functies (1.x-3.x). Het enige verschil zit in de high level taal (HLSL vs. GLSL).. Dus ja, ook met OpenGL kun je wat roest op een tegeltje pleuren. Door helemaal zelf je shader te tikken, met GLSL of met Cg.
Dan dit
gelul dat je SM1.x niet zou kunnen gebruiken omdat het een ARB extentie is! Nu val je echt door het ijs... ARB is de manier waarop vendors afspreken verschillende extenties te standardizeren, zodat je ze op alle verschillende hardware kan gebruiken. Verder werkt het
precies hetzelfde als hoe de rest van OpenGL werkt. Alle hardware die shaders ondersteunen hadden dan ook bijna onmiddelijk drivers, en sinds die dag kun je gewoon 1.x shaders gebruiken.
ARB is een platform waar verschillende partijen samenwerken om een standaard te maken. Het is niet zoals Direct X 1 bedrijf wat z'n monopolie gebruikt om het hele tempo van ontwikkeling aan de markt op te leggen. en af en toe natuurlijk een favoriete hardware partner kiest die dan wat voordeel op de rest heeft.
Over transgaming nog even dan.. ik beweer niet dat transgaming hele spellen op volle snelheid kan emuleren, end dat het zich ook nog eens op alle generaties hardware richt. Ik beweer dat als men zich toelegt op een vertaling van van een bepaalde Dirext X functie naar OpenGL dat dit bijna altijd zonder snelheids verlies is. Wat ik alleen maar zeg om aan te geven dat inhoudelijk OpenGL en DirectX weinig verschillen.
Het enige waar je (indirect) een punt hebt, is dat OpenGL slechtere driver ondersteuning heeft. Tenminste, als je het vanuit de windows-only wereld bekijkt.. Dirext X draait niet bepaald lekker op linux/macintosh etc. eh?
Die slechte ondersteuning beperkt zich echter tot bedrijven als SiS/S3 ed. die het ook met DirectX niet al te best doen, en tot voor kort Intel's geintregreerde chipsets. Gelukkig is de OpenGL ondersteuning hiervan verbeterd de laatste tijd, want dit is wel een belangrijke partij voor bepaalde game makers. niet dat veel high end DirectX games zich hier op richten overigens!
Ik zal even quoten waar ik oorspronkelijk op reageerde: "De OpenGL-API is al erg verouderd". Je moet toegeven dat ik aangetoond hebt dat dit onzin is..
"en hoewel fabrikanten altijd de nieuwste functionaliteit toevoegen via extensies, zijn deze vaak niet uitwisselbaar met andere fabrikanten, dus heb je als ontwikkelaar een probleem." En later zei je het ook, je zou geen PS1.x kunnen gebruiken omdat het zo'n extentie is. Nu weet je dat je ARB/EXT juist
wel op alle hardware kan gebruiken (en met name ARB is ook bijna altijd door nVidia/Ati/Intel geimplementeerd, soms als EXT al voordat de DirectX versie voor zo een feature uit is).
Natuurlijk snap ik best dat de meeste game makers Direct X kiezen.. het dekt goed hun markt, en het geeft een bepaalde zekerheid. Je hoeft je geen zorgen te maken dat MS opeens dreigt de ondersteuning te blokkeren (zie het net verschenen artikel.. als OpenGL developer heb je toch bijna een jaar tot de knieen in de FUD gezeten), of dat iemand bij Intel/AtiAMD/nVidia besluit de OpenGL ondersteuning even op een laag pitje te zetten. De voordelen van OpenGL zijn niet zo belangrijk..
- cross platform, natuurlijk. (Unix/Linux/Mac/Windows/Embedded/Mobiel/etc./x86(-64)/IA64/PPC/Sparc/ARM/etc.)
- stabiele basis API. Games worden vaak relatief snel ontwikkeld.. je pakt de nieuwste DirectX en tegen de tijd dat je klaar bent heb je hooguit 1 keer een nieuwe Direct X upgrade meegemaakt, en misschien 2 of 3 keer een kleine. (En als je een beetje belangrijk bent krijg je ook early acces releases etc). Als je een veel langlopender project met lagere budgetten doet echter is het fijn als de API niet steeds wijzigd wordt.
- Minder angst voor dead end platformen (zoals XP bij DX10)
- Zelf invloed kunnen hebben op de ontwikkeling van de API via ARB (zelfs zonder lid te zijn kan dat). je moet wel HEEL belangrijk zijn om dat bij Direct X te hebben.
- Makkelijker voor beginners (we zullen maar geen flamewars beginnen over welk API beter/eleganter etc. is, maar je moet toch toegeven dat voor een beginner OpenGL fijner is).
Of ga anders eens terug in de tijd en vergelijk spellen die en Direct X en OpenGL ondersteunde (bv HalfLife 1, de UTs) en je zult zien dat het tot de dag van de ontwikkelingen bij heeft gehouden. Kijk eens op game developer's fora en probeer een effect te vinden uit HL2 wat niet in OpenGL nagemaakt kon worden, door een paar hobbyisten. Of wacht anders ff op de nieuwste UT engine

of op de PlayStation3.
Je hoeft echt niet zo dogmatisch te doen over OpenGL alleen omdat jij toevallig met Direct X ontwikkelt.