Wijkt af van de standaard?
OpenGL ES wordt in zowel 1.3 als 2.0 ondersteunt in WiMo toestellen, en dat 2.0 ondersteunt wordt in WP7 staat al vast, hoewel er ook een hardware component bij zit, uiteraard.
OpenGL, zeker op het PC platform, heeft echter een groot nadeel: in de commissie (een enorm bureaucratische commissie) die de standaard ontwerpt, zitten niet alleen chip- en OS brouwers, maar ook groepen met zeer tegengestelde belangen. Van horen zeggen is een grote reden dat OpenGL toch vrij ver achter licht (too little, too late met OpenGL 3) het feit dat de CAD-mensen héél andere wensen en eisen hebben dan bijvoorbeeld een AMD wil bieden, of een EA wil hebben.
Direct3D is een API, het is goed gedocumenteerd, en hoewel klanten uiteraard inspraak hebben, speelt Microsoft daar een beetje de rol van een specialistische consultant die een product ontwikkelt wat voor de klant werkt, en misschien iets bied wat de klant niet eens had bedacht. Immers, een van de verantwoordelijkheden van IT-ers, en zeker dienstverleners, is het beschermen van de klant tegen eigen incompetentie. Een middel-groot bedrijf huurt vaak een externe partij in voor het ontwerp van een website, en als het bedrijf (de klant) zal zeggen dat ze de hele website in Comic Sans willen hebben, donkergroene tekst, oranje achtergrond, met een niet-skipbaar 2minuten durende reclamespot over de missiedoelen van het bedrijf bij de start, met als hoofddoel voor de website: klanten lokken met vakkennis en expertise. Geen IT consultant die dan >NIET< even aan de bel zou trekken van: ho wacht ho, klant is koning, maar achter dit product sta ik niet, want het zal niet werken, en wel daarom niet.
Direct3D is een standaard, en hoewel het niet een 100% open standaard is, is het een sneller groeiende en aanpassende standaard dan concurrenten. En aangezien het heel erg multi-platform is, en goed gedocumenteerd, is een tool als XNA heel erg mooi om een platform te ontwikkelen, op basis ván een platform.
Visual studio is overigens, hoewel het zo z'n gebreken heeft, een geweldige SDK. Als je het tegenover Xcode zet, waar ladingen i-Fart gedrochtapps mee zijn gemaakt voor de iPhone, dan is het verschil nogal schokkend, in het voordeel van MS' hun Visual Studio. Nog nooit mee gewerkt? Dit is DE tijd voor jou om te leven, download gratis Visual Studio 2010 release candidate, en probeer het uit. Wat let je! Hoewel je een simpele Windows Forms/Command Line app in no-time kunt bouwen met VB.net, is er niets wat je let om met C++ dezelfde apps te bouwen die je bijvoorbeeld onder een van de veel voorkomende Linux SDK's te bouwen. RC niets voor je? Probeer een freeware express edition van een of andere taal. Visual Studio Express: Visual Basic 2008 is erg compleet, hoewel het een processor affinity knop mist (zou graag alles x86 compilen ipv AMD64, ivm een niet-werkende 64-bit MS Jet engine)
Naast dat het een slimme IDE is, is het ook een erg complete IDE, van een simpele VB.Net CLI hello world app, tot een super-zware ASPX/C++ app, het is gewoon slim uitgevoerd, en laat je nadenken over wat belangrijk is: de app. Wat dat betreft zit het vol slimmigheidjes.
Over het algemeen is VS een van de meest positief ontvangen IDE's die er zijn,
http://en.wikipedia.org/w..._development_environments geeft het ook verbazingwekkend veel groene vinkjes.
Misschien niet het meest efficiënt door XNA te gebruiken? Misschien niet nee, hoewel je VS ook voor klassiek C++ werk kunt gebruiken. Gemakkelijk? Je pakt er straks 3 platformen in één klap mee, zonder heel erg veel te hoeven doen. Ik denk dat het wel praktisch is, om XNA te gebruiken. Zeker als je de drempel voor developers laag wilt houden. Ik kan zelf bijvoorbeeld XNA downloaden, en met mijn basis 3d-moddelling skills een goedkope starcraft ripoff maken die er toch nog wel aardig uitziet. Zet het voor een kleine €9 in de market, met een gratis demo ernaast, en ik bedien 3 platformen in één keer, en als mijn game succesvol genoeg is (ik ben geen EA, ik doe het maar alleen/met wat vrienden), wat makkelijker is omdat men lagere verwachtingen heeft, haal ik toch wat geld binnen. Je kunt je voorstellen dat een groot bedrijf als EA in anticipatie op een grote game (mass effect 3? Mass effect 2 hebben ze al zoiets gedaan met de iphone) een klein team van zo'n 8 man in een Agile/SCRUM soort van RAD-traject zet met als doel om een app te maken die als "carrot on a stick" werkt voor het uiteindelijke spel (hooguit 2-3u game content, met aan het eind rewards voor het uiteindelijke spel, zoals een extra conversatie met in het geval van Mass Effect 2/de iPhone app met Jacob). Welk platform kiezen ze om de €0,99 game online te zetten? De iPhone/iPad, of de Xbox/PC/WP7? Ik gok dat laatste, daar komt de echte mass effect game ook op uit, namelijk. Zo heb je zowel voordeel voor indy developers (ik en mijn clubje van de informatica klas van de hogeschool), als de grote jongens, die een promo-app kunnen maken voor 3 platformen tegelijk.
DirectX een probleem? Eerder een voordeel. Het is de de-facto standaard voor multimedia applicaties op het grootste platform wat er is: PC's. En het wordt ook gebruikt op de xBox 360. Gooi die twee platformen samen, koppel het aan de grote, populaire IDE die je al hebt, en dan is het niet meer dan logisch dat je het óók op je radicaal nieuwe merger-platform genaamd Windows Phone 7 zet. Neemt niet weg dat OpenGL ES 1.3 en 2.0 er ook nog wel zullen zijn, zodat mensen die eerder iets gemaakt hebben (ik noem bijvoorbeeld, de meeste SPB apps, zoals mobileshell, draaien op OpenGL ES 1.3, en die zijn toch vrij welkom op WiMo telefoons) met C++ en OpenGL calls niet direct hun hebben en houden overboord hoeven te gooien.
Vergelijk het met de overgang van "windows forms" naar "windows presentation foundation". Hoewel dat laatse XP SP3 nodig heeft (of SP2), zie je toch nog steeds veel klassieke "forms" apps. Vista en W7 vertalen dat keurig naar de slimmere WPF, maar je mist een hoop features. Pas nu W7 uit is, en we sowieso een paar jaar verder zijn (ladingen oude netbursts die IE6 draaien worden uitgefaseert voor Athlon II's, Core2 Duo en Core i3 bakjes in steeds meer bedrijven), komt WPF door.
Trouwens; sowieso: C++ code is leuk, en HTML programmeren in Notepad zonder code highlighting ook wel, maar vergeet niet: C++ is ook een hogere taal. We programmeren sowieso steeds menselijker, dat is echt niet nieuw. Hoewel we veel met VM's werken, zoals bij Java bijvoorbeeld, weten we dat zoiets ook nadelen heeft. "porten" van API's (DirectX), en het samenvoegen van alles in één IDE, is denk ik een logische stap zonder te zwaar te worden: multi platform/onafhankelijkheid, zonder te veel te hoeven nadenken. Is het fout? Denk het niet. Als het fout was, dan programmeerde we niet C++, maar waren we nog steeds bezig met hexadecimalen in onze kop stampen, in een poging de juiste registers te schrijven en te lezen van onze over-sized PIC's genaamd X86 CPU. Zelfs hexadecimaal was al een interpretatie van puur binair, en van al die hexadecimale commando's en registerindexen hebben we op den duur ook een soort van basis assembly code gemaakt. Ik denk dat je het vooral kunt zien als een verlengde op derde generatie programmeertalen. Proceduraal, maar toch met een hoger niveau van abstractie wat je toe staat om hetzelfde kunstje uit te halen op een volledig ander platform.