08.17.08

OpenGL 3.0 uccide OpenGL e le speranze degli utenti Mac/Linux

Pubblicato su ATI, DirectX, Games, Intel, Linux, Linuxgamers, Mac, OpenGL, Segnalazioni, nVidia tagged , , , , , a 22:30 di mastro

È con grande tristezza e con un po’ di ritardo che oggi vi annuncio l’uscita delle tanto attese OpenGL 3.0.

Vi ho parlato di come Direct3D di microsoft avesse vinto la battaglia con OpenGL in passato. Una storia da cui OpenGL esce sconfitta ma a testa alta.

Oggi le cose stanno ben diversamente da allora!

OpenGL 3.0 era la speranza degli utenti Linux e Mac ma non solo! Migliaia di sviluppatori di giochi e applicazioni 3D attendevano questo rilascio che prometteva importanti cambiamenti strutturali alle specifiche!

L’ARB aveva promesso, ad esempio, un’API orientata agli oggetti, seppur ancora basata su C. Un rifacimento quasi completo della struttura e molte altre cose.

OpenGL 3.0 avrebbe dovuto uscire molto tempo fa ma la sua uscita è stata rimandata più volte. Chiedendo informazioni nel canale ufficiale di OpenGL si poteva essere, con egual probabilità, ignorati o invitati a “non rompere i maroni, quando esce esce! Guarda il sito“.

Ebbene non ho più “rotto i maroni”, fiducioso. Guardando oggi il sito di opengl effettivamente un bell’annuncio indica che la specifica OpenGL 3.0 è pronta ed è liberamente consultabile e scaricabile.

Il problema è che quest’API che doveva sbaragliare Direct3D di microsoft surclassando DirectX10 si è invece rivelata un’immensa delusione!

La maggior parte delle modifiche promesse non sono state implementate.

Capiamoci! OpenGL 3.0 implementa lo stato dell’arte delle schede video! Quindi è pari a DirectX10 (direct3d), e forse anche superiore, per quanto riguarda le feature implementabili! Ci sono i Vertex Shader, gli shader sono stati migliorati, vi sono diverse altre caratteristiche delle più moderne schede video. Però la release non ha nulla di radicalmente diverso da OpenGL 2.1. Sono in molti a dire che poteva essere taggata OpenGL 2.2 ed uscire molto molto tempo fa!

Gli sviluppatori che hanno tanto atteso la riscrittura delle API sono DECISAMENTE INCAZZATI, altri semplicemente amareggiati o delusi.

A cosa è dovuta ufficialmente questa scelta? Apparentemente non si è voluto rompere la compatibilità con alcune applicazioni CAD. Ebbene si! OpenGL è ancora leader nel campo CAD e l’ARB non ha voluto rischiare di perdere questa leadership: ha preferito abbandonare ogni possibilità di attirare il mercato videoludico; mercato più avanzato tecnologicamente e caratterizzato da una rapida evoluzione.

Resterà quindi DirectX di microsoft a far strada sui videogiochi.. Ovviamente solo sui sistemi operativi redmond.

L’ARB dimostra incapacità a prendere decisioni importanti, sordità alla community di sviluppatori, atteggiamento non lungimirante e senza progetti per il futuro se non quelli di mantenere le cose come stanno ora. Si rassegna a seguire microsoft DirectX con qualche mese di ritardo invece di provare a trascinare il mercato dell’hardware grafico con innovazioni e scelte importanti.

Questo significa che le speranze per gli utenti non-windows come me di poter un giorno giocare nel proprio sistema operativo si spengono tristemente.

Mi restano solo alcune domande a cui non so dare risposta.

Perché rimandare così a lungo se poi non è stata riscritta tutta la API? Almeno potevano rilasciare subito e accaparrarsi così parte del mercato nel passaggio DirectX10/Vista. Scelta strategica suicida?

Perché rilasciare l’11 di agosto in assoluto silenzio? A pochi giorni da ferragosto, quando molti sono in vacanza, senza un minimo di pubblicità o un qualche tentativo far notizia?!? A che gioco stanno giocando?

Perché non rispondono alle critiche se non per chiedere di moderare il linguaggio? È come se “se lo aspettassero” e avessero deciso in anticipo di tenere questa linea.

A questo punto aveva più senso creare un API apposita per i giochi e lasciare che i CADisti utilizzassero l’API retro-compatibile e vecchia.

Vorrei tanto poter dar risposta alle mie domande ipotizzando che dietro a tutti ci sia stata Microsoft ma non penso che questa volta le si possa dare colpa.

Sono amareggiato.

24 Commenti »

  1. imu detto,

    Mi associo al dolore.

  2. Salvio detto,

    Sono d’accordo… Anche io mi asoccio al dolore, però pensavo, se questo progetto è open, perchè qualche buona anima non si mette e genera un fork dove è possibile implementare ciò che è stato tralasciato??? Il problema è:”dove si trova quell’anima, o quelle anime volenterose a fare il fork???” boh, nel frattempo vedremo gli sviluppi…

  3. Nero detto,

    Mi associo anch’io alla delusione. Da pieno utilizzatore Linux da anni mi è sempre dispiaciuto di non poter cestinare il dualboot sui miei computer per poter giocare quando so perfettamente che su Linux i giochi potrebbero funzionare meglio che in Win e con meno risorse.
    Tuttavia non penso che un fork sia una buona soluzione. Un fork per forza di cose divide le forze degli sviluppatori solitamente nell’open source fin troppo frammentate da centinaia di progettini e progettoni. Penso avrebbe avuto più senso rilasciare una versione 3.0 competitiva con le DirectX e una versione 2.2, simile alla 2.1, con poche innovazioni, ma utilizzabile in ambiente CAD.
    Temo che in OpenGL si pentiranno di queste scelte.

  4. telperion detto,

    Da dire anche che DirectX è un framework completo: grafica, audio, rete, periferiche di input, mentre OpenGL è solo un framework grafico, tutto il resto te lo devi gestire a parte con altri fw, e questo è un altro “gigantesco” vantaggio di DirectX.

  5. AkiRoss detto,

    Io non sono d’accordo. Si sapeva da tempo che OGL 3.0 non sarebbe stata una rivoluzione (intendiamoci, non ci sono MAI state rivoluzioni nelle opengl e dubito che mai ci saranno e se ci saranno non si chiameranno OpenGL ma “UnAltroProdottoKhronos”. Al massimo c’e’ stato GLSL, che e’ una specifica separata).
    Le 3.0 dovevano essere una “pulizia”. L’obbiettivo era rendere default quelle tecniche che nella 1.x e 2.x erano “performance optional”, tipo oggetti vari, FBO, VBO etc (notare che questi sono gli oggetti di cui si parlava, quindi gli elementi di OOP ci sono).
    Le OpenGL 3.0 dovevano sostanzialmente eliminare l’immediate mode e mi pare che sia stato fatto. Dovevano essere backward compatible, ed e’ stato fatto. Dovevano introdurre oggetti, aggiornare gli shader (anche se il geometry non e’ ancora stato messo, arrivera’) ed e’ stato fatto.

    Le opengl sono sempre state contraddistinte da una continuita’ logica nelle relase, dalla vicinanza, cosi’ che il mercato non si trovasse sputtanato come per le DX. Qualcuno dice: perche’ 3.0 e non 2.2? Semplice, perche’ anche nelle 2.0 si potevano chiamare 1.6 (o 1.7 o quel che l’e'), visto che alla fine l’unica modifica rilevante erano gli shaders, senza cambiamenti sostanziali all’API.

    Il fatto e’ che le OGL hanno sempre funzionato bene, dall’inizio (mentre le DX no, hanno cambiato la struttura portante piu’ volte), quindi non c’e’ mai stato bisogno di un vero rewrite. L’unica pecca e’ che si ingrossavano con il tempo, e la gente non usava quelle feature esclusive delle schede video recenti (shader, oggetti) danneggiando le performance. Le OpenGL 3.0 non sono una riscrittura, ma un cambiamento sostanziale in questa direzione – come lo erano le 2.0.

    Io mi aspettavo proprio il prodotto che e’ uscito, e non mi pare che il consorzio non abbia implementato le idee portanti che s’erano dette.

    E no, non credo neanche alla teoria di microsoft, del CAD e dell’11 agosto.
    Detto per inciso, ci sono aziende altrettanto grosse e potenti che spingono per disintegrare le directx che sono nel gruppo. E la stessa microsoft non ha interessi a distruggere l’unica concorrente seria che ha (senza concorrenza la qualita’ decade. E MS la qualita’ delle DX l’ha guadagnata grazie alla concorrenza delle OGL).

  6. Lazza detto,

    Non sono d’accordo. L’avvento di videogiochi su Linux porterebbe un sacco di roba proprietaria, con la conclusione inevitabile di usare Linux perché costa meno, e non per i mille altri vantaggi che ha. Anzi, sarei molto contento di vedere un buon Cad libero (basterebbe evolvere Qcad) piuttosto che decine di videogiochi chiusi. Per quelli ci sono le console.

  7. bohtont detto,

    Secondo me non si possono conciliare le parole Linux e la parola gamers.
    Gli utenti Linux oramai hanno rinunciato a giocare da un pezzo…
    Però c’è sempre il progetto Wine ;-)

  8. ercoppa detto,

    >L’avvento di videogiochi su Linux porterebbe un sacco di roba proprietaria

    Ma che discorso è? E’ come dire “limitiamoci perchè vogliamo essere libere”, le OpenGL devono offrire quello che devono offrire, sta all’utente decidere se e come lucchettizzare il proprio OS.

  9. ilgufo detto,

    Mi è dispiaciuto anche a me… il cambio radicale sperato da alcuni non c’è stato.

    @bohtont
    >> Però c’è sempre il progetto Wine ;-)
    Non è la soluzione Wine, perché anche questo si appoggia alle openGL.
    Io spero in Gallium3D…

    @Lazza: non si può fare questo discorso, è sbagliato chiudersi nel proprio guscio così IMHO.

  10. Lazza detto,

    @ ercoppa & ilgufo, non ho detto di togliere feature di proposito. Ho detto che anche se non vengono tutte queste cose iper-mega-galattiche non è il caso di farne un dramma, anzi magari si può trovare almeno un lato positivo, no?
    @ ilgufo, be’ “chiudersi” non direi proprio. ;-)

  11. LuNa detto,

    machissenefrega se si usano tecnologie proprietarie o libere, basta che funzionino. basta con sti discorsi dalle vedute limitate. sono proprio questi i discorsi da NON fare se si vuole arrivare da qualche parte. E chi ha gli nvidia si usi gli NV e chi ha ATI si usi i radeon, se riesce a resistere per più di 5 minuti, e via discorrendo. Il male sta nelle teste non nella licenza.
    Per quanto riguarda OpenGL mi unisco al coro. Cosa c’entri chiuso o aperto in sto discorso lo sa soltanto chi lo ha scritto.
    @Lazza: qcad ? Non scherziamo nemmeno. E qui parlo con cognizione di causa perchè ci lavoro con il CAD. Non ci sono alternative.

  12. Lazza detto,

    @ LuNa, non ho detto che è usabile in questo momento. Ho detto che andrebbe migliorato, ma è una base su cui concentrarsi invece di creare diecimila progetti che dopo 6 mesi spariscono (basta leggere la lista di software con licenze aperte su Wikipedia, voce cad: ci sono innumerevoli voci, ma nessuna a buon punto).

  13. mastro detto,

    wow che feedback
    rispondo a un po’ di gente

    @Salvio
    generare un fork di openGL ha poco senso. Tu puoi definire un API domani.
    Il problema è che l’API dev’essere implementata da chi fa le schede video.
    OpenGL non lo creano “un gruppo di appassionati”. L’ARB è un consorzio di aziende che decidono dove evolvere.
    DirectX e OpenGL sono solo API: Application Programming Interface. Ovvero danno un certo numero di funzioni e dicono cosa devono fare.
    Poi serve che l’hardware faccia ciò che dicono le API e una libreria (o driver) che mappi la API sull’hardware vero e proprio.
    In questo contesto tu puoi scrivere l’API più figa del mondo ma se non hai intenzione di scrivere anche i driver per tutte le schede video e promuoverla allora è perfettamente inutile. Oppure puoi convincere ATI, nVidia, Intel e gli sviluppatori a usarla…

    @Telperion
    si il confronto è tra OpenGL e Direct3D. È vero che chi usa OpenGL deve appoggiarsi ad altro per l’audio, la gestione eventi ecc ecc. Questo non è un vero problema… Una scocciatura forse: c’è SDL. Ci sono giochi come Quake che dimostrano come quanto dici non sia un vero problema.
    Detto ciò… la parte più complessa e importante di tutta la baracca è proprio Direct3D. Prima scegli l’API grafica e poi il resto di conseguenza. Nessuno dotato di intelligenza sceglierebbe DirectX per la sola API audio :) . Quindi un confronto DirectX/OpenGL, avendo bene in testa questa cosa, ha perfettamente senso.

    @AkiRoss
    grazie del commento. :)
    Pero ad esempio non mi risulta che abbiamo implementato gli oggetti (come tu dici). Se mi sbaglio lieto di constatarlo percarità… Puoi darmi più info?

    @Lazza
    stiamo parlando di una API.
    È come se affermassimo che le librerie C++ è meglio non averle perché c’è un sacco di software proprietario in giro…
    E comunque gli esempi di giochi open/free su OpenGL sono molto più numerosi di quelli open/free su DirectX. Secondo me sarebbe un incentivo ad aprire un po’ di più un mercato dove vige il closed.

    @LuNa
    a te dico il contrario di Lazza.
    È vero i driver nv fan cagare ed è bello che nVidia ci fornisca dei buoni driver. Però non è giusto “accontentarsi” perché se oggi abbiamo un così bel sistema, personalizzabile ecc. ecc. è proprio perché è libero.
    Più roba non-free accettiamo senza fiatare e più perderemo questa libertà e cominceremo a chiederci: “perché è crashato?”. “cosa vuol dire questo strano codice di errore?”. E nessuno potrà risponderci se non chi ha scritto quel codice…

  14. Lazza detto,

    @ mastro, sono d’accordissimo su quello che hai detto.

  15. LuNa detto,

    @mastro: posso benissimo dirti il contrario, ti quoto per far quadrare meglio il discorso:

    Più roba non-free accettiamo senza fiatare e più perderemo questa libertà e cominceremo a chiederci: “perché è crashato?”. “cosa vuol dire questo strano codice di errore?”

    Continuiamo pure così allora. Rinunciamo alle cose buone, che magari funzionano pure solo perchè non sono GPL. Qui non è questione di NON libero, è questione che non si vuole niente che non sia QUELLA licenza. Guarda tu il kernel di linux. E questa è una cosa.
    La seconda è, e qui insisto con forza e convinzione assoluta: Se un programma/libreria/qualsiasicosa mi serve, soddisfa le mie esigenze, funziona, mi permette di svolgere le mie attività, eccetera… NON devo usarlo per una questione morale (licenza) ? Ma come si fa, perchè bisogna ammazzarsi le pal… per un po di etica ? Cribbio non stiamo mica parlando di questioni morali legate alla nostra vista, parliamo di Software. I computer servono per semplificarmi la vita, non per ammazzarmi con le questioni morali, che spesso mi danno pure problemi. Non usare un software perchè ha una licenza taldeitali è stupido. Se mi diceste “non lo uso perchè ha un costo e soldi non ne ho” la cosa potrebbe anche avere un senso, ma dire “E’ gratis ma non posso vedere il codice” equivale a darsi una martellata nei gioielli di famiglia. Ti danneggia solamente, non ti aiuta. In questo modo per Linux non ci sarà mai niente. E non ditemi aspetta non ditemi se non ditemi un giorno non ditemi domani. Io sto guardando oggi e ho visto ieri. Non ci sono presupposti per un domani, facendo questa politica. Questi sono dati di fatto, non ci sono se e non ci sono ma. Non ci sono argomenti ne fatti. Solo chiusura in se stessi e in una “stupida” (non prendetelo alla lettera) licenza che a nulla serve se non a chiudere un mondo già chiuso. Software libero ? Imporre e imporsi QUELLA licenza o quel tipo di PENSIERO equivale a una chiusura peggiore di quella del codice. La chiusura mentale è una cosa ben più grave, e porta il male. A oggi, porta il male. Innegabile.
    Usatelo il software, anche quello chiuso, per dio. Non stiamo discutendo della vostra vita o della vita dei vostri figli o delle vostre mogli. Vi chiudete su una cosa che non ha nessunissimo senso di essere. Ci sono cose molto più importanti su cui imporsi. Rendetevi conto che questo modo di ragionare danneggia soltanto voi stessi. Dannazzione !

  16. LuNa detto,

    @Lazza: 10000 progetti: il bello del software libero no ?
    “andrebbe migliorato” : leggi il mio commento sopra. Sempre al condizionale. Autocad di Autodesk MIGLIORA di versione in versione. Attenzione: PRESENTE, non condizionale. DirectX migliora di versione in versione (le 10 sono una bomba), presente non condizionale. Adobe Photoshop migliora di versione in versione. Presente non condizionale.
    Troppi se e troppi ma. Fatti non pugnette. Attenzione che non dico che sia sbagliato il sistema ne la licenza, come forse tu pensi che io dico. Anche per te vale la stessa cosa, apri la tua mente ad altro. ci sono ALTRE cose oltre al software GPL. Non chiudetevi. Libertà. Libertà ! La libertà è la possibilità di scegliere. Così facendo applicate la possibilità di NON scegliere.

  17. AkiRoss detto,

    @mastro: prego. Ad essere sincero ora che sto guardando le specifiche 3.0 per benino, mi accorgo che sugli oggetti sostanzialmente ci sono modifiche per quanto riguarda i Vertex Array Objects, mente Buffer Objects, Texture Objects etc mi pare rimangano sostanzialmente invariati, Di nuovo c’e’ un appendice sugli oggetti condivisi e contesti multipli :D
    (Si, mi aspettavo qualcosa di piu’, ma evidentemente ritengono che il livello attuale sia abbastanza buono, “who am I to disagree?”)

    Secondo me, comunque, la cosa piu’ grande che si dovrebbe vedere in questa specifica e’ il Deprecation Model: quello e’ cio’ che dice “nelle prossime versoni, potremmo buttare via tanta roba” e inoltre definisce ed incentiva buone pratiche d’utilizzo.
    Insomma, quello e’ il punto di inizio – per uno standard affermato e consolidato come opengl – per dire: “ora decideremo cosa fare, magari spezzare le compatibilita’, voi siete stati avvisati”.

    Credo che sia anche questo il gran lavoro fatto: decidere – interpellando un po’ tutti – cosa e’ bene tenere e cosa no. Capire quali strade seguira’ l’hardware e avvisare che le cose stanno per cambiare. Per me e’ una gran cosa – sia da fare a livello di khronos, sia per i programmatori.

    A pensarci bene, questo implica che in poco tempo potrebbe spuntare una nuova specifica con tagli radicali, visto che – alla fine, khronos i tagli li ha fatti… Ma naturalmente non puo’ buttare via tutto quello che e’ stato fatto fin ora.

    Mi spiace non poter essere piu’ pronfondo e tecnico… Alla fine non sono un grande esperto di opengl. Dico solo che da quel che so, le mie aspettative sono stato piuttosto soddisfatte, soprattutto perche’ s’e’ sempre detto che queste specifiche non avrebbero rotto la compatibilita’ con le versioni precedenti.

  18. mastro detto,

    @AkiRoss
    beh in effetti OpenGL 3.0 non è affatto male come API.
    Il punto è che avevano promesso una serie di cose che non sono state fatte.
    Erano tutte cose votate al mercato dei videogames. Decidendo di ritardare l’uscita e non implementare queste feature hanno di fatto dato un messaggio molto chiaro a chi sviluppa: “puntiamo su CAD, dei giochi ci importa poco”. Ed è con questo messaggio che le aziende produttrici di giochi dovranno decidere la strategia e le tecnologie future.
    Il che significa che anche chi aveva un dubbio o stava pensando di passare a OpenGL adesso ci ripenserà.

    Ecco perché, secondo me, qui muore OpenGL.
    Se poi leggi i commenti all’uscita di OpenGL 3.0 (in uno dei 2 link che ho messo) noterai come il malcontento sia piuttosto generale…

    Personalmente penso che più che nelle specifiche l’ARB abbia sbagliato nella strategia:

    affermare: facciamo questo e quello, poi rimandare e infine non farlo non crea una grande immagine.

    se invece avessero affermato da subito che intendevano implementare al più presto le ultime specifiche e fossero usciti con una versione intermedia secondo me ora sarebbero tutti contenti e tanti di più sarebbero switchati a OpenGL (in particolare nel periodo di uscita di DirectX10/Vista)

    Creare l’attesa (e che attesa!!!) e poi deluderla è peggio che fare un api cattiva.

  19. KenShiro detto,

    sbagliato news, posto qui:

    A quanto pare si sono resi conto della stuppidaggine che hanno fatto… il presidente della Khronos Group ha detto che tutte le features mancanti nella 3.0 saranno presenti nella 3.1 che uscira tra 6 mesi
    http://www.theregister.co.uk/2008/08/13/opengl_firestorm/

    Concludo infine che ormai opengl sta perdendo terreno anche nel mondo CAD, basta dare 1 sguardo su 3dstudiomaxx o autocad ecc… per vedere che è presente anche directx e quest’ultimo in molti software è anche impostato come default.

  20. mastro detto,

    @KenShiro
    grazie dell’info
    lo spero…
    in tal caso la mossa sarebbe stata fatta “per prendere tempo”
    ciò nonostante penso sarebbe stato meglio agire diversamente

    AAAAHHTÀÀÀÀ!!!
    Ora OpenGL ha 6 mesi di vita prima di esplodere…
    se fa uscire la 3.1 magari lo revoco toccando un punto di pressione :P

  21. Zan-Shi detto,

    Mi dispiace deludervi, ma le OpenGL non sono minimamente open-sources, sono chiuse quanto le DX; la differenza sta nel fatto che le DX sono uno standard chiuso, mentre le OGL aperto.
    Nello specifico chiunque voglia può scrivere delle estensioni ed è possibile che queste estensioni vengano incluse nelle release successive. Questo fa delle OpenGL uno standard aperto, ma non vincola nessuno a rilasciare i sorgenti delle estesioni, e non credo siano mai state rilasciati (salvo magari quelli si società che rilasciano già di loro i sorgenti).

    Per quanto riguarda il discorso OGL3 non saprei che dire, programmo da molto poco e ho visto solo OGL e quindi non ho una visione sufficientemente ampia per giudicare la cosa.
    Certo che mi pare strana la scusa del cad, visto che leggevo in giro che non venivano implementate nemmeno le 1.5.

  22. mastro detto,

    @Zan-Shi
    tnx per il commento ma non mi deludi…

    le OpenGL sono delle API aperte…
    l’implementazione delle API può anche essere chiusa, certo. Ma è ben descritto cosa debbano fare…
    è chi scrive i driver che le crea

  23. Zan-Shi detto,

    Corretto, il mio commento era rivolto a coloro che nei loro post sostenevano che le OpenGL sono migliori delle DX perché free.

  24. AkiRoss detto,

    @mastro: hai ragione, sicuramente non e’ stata una gran mossa… Ma personalmente non amo farmi scoraggiare dall’hype che si crea :D Sta di fatto che le DX su Linux non vanno, quindi non ho alternative, anche volendo cambiare fazione.

    Posto in ritardissimo, dopo vacanze etc :D

    Ciao!


Lascia un Commento