Tempo fa ho riassunto gli eventi che ci hanno portato oggi al dominio di DirectX come standard per i giochi rispetto ad OpenGL..
si tratta di storia: storia dell’informatica ma sempre storia!
E un testo un po’ lungo ma molto istruttivo; è diviso per eventi descritti senza commenti di parte.
la mia fonte è un libro stampato:
OpenGL® SuperBible, Third Edition
By Richard S. Wright Jr., Benjamin Lipchak
che consiglio a chi vuole studiarsi la grafica 3D imparando con l’OpenGL
Io sono evidentemente di parte (OpenGL): nonostante questo i fatti descritti non lo sono. Potete trovarne riscontro e conferme facilmente.
Questo che racconto è un esempio utile per capire come si fa strada Microsoft nel mercato e il perché certa gente, me compreso, ha poca fiducia in questa compagnia e sostiene con forza le alternative.
Oggi lo standard per i giochi potrebbe essere OpenGL: anche Linux e Mac avrebbero gli ultimi giochi per computer! Se vuoi capire perché questo non è successo prosegui nella lettura degli avvenimenti che ci hanno portato al “dominio” di DirectX
Nota: DirectX non è solo grafica 3D: si occupa di Audio, Input vari, ecc… Insomma: tutto quanto c’è di multimediale. OpenGL invece è solo il 3D: che è comunque la parte più importante e complessa di un sistema multimediale. Il confronto qui descritto, anche se si parla di DirectX, è tra Direct3D (di DirectX) ed OpenGL… Un confronto corretto sarebbe DirectX contro OpenGL + SDL (+ OpenAL ). Comunque questo più che un confronto è una descrizione degli eventi che caratterizzarono la lotta tra OpenGL e DirectX; eventi che ci hanno portato allo stato attuale delle cose.
Comincia la storia – fatti oggettivi
Il predecessore di OpenGL è stata la IRIS GL di Silicon Graphics: era inizialmente una libreria grafica 2D che si è evoluta in una 3D, costruita su hardware dedicato.
SGI (Silicon Graphics) ha poi capito che perché potesse invadere un mercato più ampio doveva subire dei cambiamenti… Così nacque OpenGL.
Con lo scopo di definire lo standard e promuoverlo nacque l’ARB (Architecture Rewiev Board) composto inizialmente da: SGI, Digital Equipment Corporation, IBM, Intel, Microsoft. Ancora oggi 4 volte l’anno l’ARB si riunisce per discutere l’evoluzione di OpenGL e le strategie per promuoverlo.
SGI controllava comunque le licenze OpenGL.
Nel 1992 venne creata la specifica OpenGL 1.0. Da allora molti altri si sono aggiunti all’ARB: in particolare i produttori hardware.
Gli incontri sono aperti ad altre aziende non iscritte all’ARB; si tenta comunque di mantenere il numero di partecipanti limitato per non ridurre la produttività .
Un’implementazione OpenGL è composta o da una libreria software, che crea immagini tri-dimensionali in risposta alle chiamate OpenGL, oppure da un driver per un dispositivo hardware, che traduce le chiamate OpenGL in segnali comprensibili alla scheda grafica.
un produttore hardware che vuole entrare nel mercato sfruttando OpenGL deve pagare ad SGI una licenza: con questa licenza gli viene data un’implementazione di esempio interamente software e un “device hardware kit” che viene poi utilizzato per produrre driver ottimizzati e aggiungere estensioni OpenGL personalizzate.
Ogni modello del produttore deve passare un test di conformità per assicurare che implementi correttamente tutta una specifica OpenGL.
I driver per l’utilizzo sono forniti, con licenza, dai produttori stessi. Nonostante questo chiunque può produrre dei driver non ufficiali: in genere ci si basa sul codice non ufficiale MESA.
È a questo punto che entra in scena DirectX.
Un tempo si potevano comprare particolari schede (Windows Accellerator, o Graphic Device Interface – GDI) per accelerare i comandi 2D in windows (stiamo parlando del 3.1 3.11 per quelli che se lo ricordano, prima di windows 95): queste schede erano perfette per iniziare a sviluppare i primi videogiochi.
I giochi in windows erano allora: giochi di carte o puzzle, comunque non richiedevano animazioni veloci.
I produttori di giochi continuarono a basarsi sul DOS (il predecessore di Windows, un sistema non grafico, cercate su internet per maggiori informazioni) per avere un pieno controllo delle risorse e un accesso completo al monitor.
Sotto windows questo non poteva avvenire perché i giochi dovevano condividere le risorse con il sistema windows.
Microsoft provò a fornire gli strumenti per creare giochi basati su windows con un primo tentativo (WinG API) che fallì, i produttori di giochi continuarono a produrre per DOS.
Quando microsoft iniziò a sviluppare windows 95 si pose come obiettivo quello di fermare una volta per tutte lo sviluppo di giochi su DOS: doveva fornire un accesso diretto all’hardware. Così Windows95 incluse un kit di sviluppo orientato ai produttori di gioco che tra le sue API[¹] presentava DirectDraw (per dirla tutta DirectDraw è stato acquisito con l’acquisto di una piccola azienda: non lo ha fatto microsoft).
A quel punto per restare competitivi i produttori hardware avevano bisogno dei driver GDI e di DirectDraw: questi driver erano intesi a fornire agli sviluppatori un accesso diretto all’hardware simile a quello che avevano con l’utilizzo di DOS.
Questa volta Microsoft ebbe più successo e quel gruppo di API oggi si è chiamato DirectX. Quelle API rudimentali si sono evolute per fornire accesso diretto anche ad altri hardware: le schede sonore, ed i dispositivi multimediali in generale.
I giochi erano tutti in grafica 2D: DirectX era l’API più utilizzata (ce n’erano altre, ad esempio QuickTime di MAC)
Mentre microsoft cercava di portare all’interno di windows una piattaforma per i giochi sponsorizzava allo stesso tempo OpenGL perché entrasse a far parte di Windows. Lo scopo era far concorrenza alle workstation Unix-based che tradizionalmente ospitavano le applicazioni scientifiche.
Le schede grafiche 3D erano troppo costose per gli utenti e non venivano utilizzate per i giochi. Solo le aziende potevano permettersele così OpenGL divenne inizialmente popolare nel campo del CAD, delle simulazioni e delle visualizzazioni scientifiche. In questi campi le performance erano di grande importanza: OpenGL fu studiato per ottimizzarle ed ebbe molto successo.
OpenGL diventò uno standard sufficientemente maturo e ben stabilito, con molte potenti funzionalità . Contemporaneamente le schede grafiche 3D arrivarono ad un prezzo che iniziava ad essere attraente anche per i videogiocatori.
Mentre questo accadeva Microsoft stava cercando di pubblicizzare la sua nuova API di rendering 3D, direct3D, inizialmente era difficile da usare e dalle ristrette funzionalità rispetto ad OpenGL: tanto che non avrebbe trovato posto nel mercato.
Iniziò così la guerra delle API tra SGI e Microsoft:
Microsoft faveva parte dei membri fondatori dell’OpenGL ARB e aveva voluto OpenGL sulla piattaforma Windows per permettere ai produttori di software su piattaforme unix di effettuare con poca difficoltà un porting alle piattaforme Windows. La portabilità era un’arma a doppio taglio perché avrebbe permesso agli sviluppatori su Windows di effettuare dei porting ad altre piattaforme.
Uno dei giochi più popolari a quel tempo fu Quake: il suo autore John Carmack riscrisse in OpenGL il motore del gioco; lo fece in pochi giorni (un week-end).
L’evento mise in fermento l’intero mondo dei giochi su PC.
John Carmack dimostrò facilmente come 10 righe di codice OpenGL richiedevano 2-3 pagine di codice Direct3D per ottenere lo stesso obiettivo (renderizzare qualche triangolo).
Molti programmatori di giochi iniziarono a considerare seriamente OpenGL come ad un’API per tutte le applicazioni 3D e non più solo per le applicazioni scientifiche.
Aziende come la ID software, che si prefissavano di produrre giochi per più piattaforme, videro semplificarsi notevolmente il raggiungimento di questo obiettivo.
Microsoft si trovò di fronte ad un dilemma: non poteva smettere di promuovere Direct3D dopo quello che aveva già speso fino a quel momento ma non poteva neanche smettere di promuovere OpenGL perché avrebbe rinunciato ad una grossa fetta di mercato delle WorkStation (a quel tempo appartenente esclusivamente a piattaforme Unix).
Così iniziò a sostenere con insistenza che OpenGL era adatto a rendering[²] esatti e precisi senza vincoli di tempo e Direct3D al rendering real-time (quello dei giochi).
La documentazione ufficiale di Microsoft sosteneva che OpenGL fosse più come un motore di rendering per ray-tracing[*] che un’API per la grafica real-time.
[*]ray-tracing: tecnica di rendering alternativa che permette di ottenere risultati con qualità notevolmente maggiori di quella classica (scan-line), ma con tempistiche che lo rendono inadatto, per ora, al rendering real-time. (usate un motore di ricerca per + info, non voglio andare off-topic)
SGI prese in mano la campagna di promozione di OpenGL tra i produttori di giochi che volevano poter scegliere quale tecnologia utilizzare.
Qualche sviluppatore di giochi iniziò a scrivere in OpenGL in previsione della stagione natalizia 1997.
Microsoft incoraggiò i produttori a sviluppare in Direct3D e disse che chi voleva utilizzare l’OpenGL sulla sua piattaforma avrebbe dovuto utilizzare un apposito kit di sviluppo denominato Mini-Client Driver (MCD).
Dopo molte critiche imbarazzanti microsoft spese moltissimo tempo per migliorare le scarse prestazioni del suo MCD in rapporto a quelle della piattaforma sviluppata da SGI.
Dopo un lungo lavoro di miglioramento l’MCD permise ai produttori di mettere le mani sul codice fino a chiamate di basso livello (chiamate dirette all’hardware, la scheda video, per disegnare direttamente).
Microsoft continuò comunque ad insistere che l’OpenGL non era adatto allo sviluppo dei videogiochi e che l’MCD serviva solo per fornire una strada pronta alle applicazioni scientifiche come il CAD.
Rapidamente tutti i produttori di schede video ebbero la loro implementazione driver basata sull’MCD.
La maggioranza dei giochi di allora era sviluppata in Direct3D ma i produttori di schede video faticavano ad ottenere un supporto su di esso: supportavano invece fortemente OpenGL. Per questo presto il mercato del Direct3D si sarebbe estinto.
Nell’estate del ’97 microsoft annunciò che NON avrebbe fornito le licenze per il codice MCD e hai produttori non sarebbe stato permesso di rilasciare i propri driver per windows 98.
Potevano però fornirli per la piattaforma Windows NT: la piattaforma di pertinenza per OpenGL secondo microsoft ( nota: Windows NT era una versione di windows destinata alle aziende ed inadatta all’utenza Desktop ).
I produttori software che avevano speso tempo per sviluppare i propri giochi in OpenGL non poterono immettere nel mercato tali versioni entro il natale del 1997. I produttori di schede grafiche si ritrovarono a non poter fornire i driver OpenGL delle schede vendute.
Microsoft si “guadagnò” così un intero anno di vantaggio rispetto ad OpenGL; intanto continuava ad affermare che l’OpenGL andava usato per la grafica non real-time su piattaforma NT e Direct3D per i giochi su piattaforma windows98.
Per fortuna questa situazione non ristagnò a lungo e SGI fornì il proprio driver kit per OpenGL basato sulla propria implementazione per windows.
Il driver kit SGI venne battezzato Installable Client Driver (ICD).
Microsoft scoraggiò l’uso dell’ICD sostenendo che MCD era molto più semplice da utilizzare.
L’ICD comunque aveva un’interfaccia semplice da usare che rese lo sviluppo di driver simile a quello dell’MCD di microsoft, migliorando inoltre le loro prestazioni.
I produttori di giochi ricominciarono a guardare seriamente all’OpenGL.
Microsoft, forte della sua vittoria iniziale ed ormai senza possibilità di fermare l’avanzata di OpenGL nel mercato dei consumatori, accettò di nuovo di sviluppare OpenGL per Windows98.
Stavolta Microsoft e SGI avrebbero dovuto lavorare insieme ad una nuova versione delle API, battezzata “Fahrenheit“, che avrebbe dovuto mettere insieme il meglio di OpenGL ed il meglio di Direct3D.
Fahrenheit sarebbe dovuta essere fruibile esclusivamente su hardware microsoft e Silicon Graphics.
Nel contempo SGI stava perdendo la battaglia con microsoft sui prezzi delle workstation.
SGI dovette abbandonare il mercato dei consumatori e dopo poco tempo rilascio la sua nuova versione di NT Workstation, con il completo sostegno di microsoft.
OpenGL aveva perso il suo più grande sostenitore per il mercato dei consumatori.
Molte industrie videro l’accordo di Fahrenheit e l’uscita dal mercato consumer di SGI come la fine di OpenGL.
Invece OpenGL fu di nuovo ampiamente disponibile sull’hardware: gli sviluppatori non avevano bisogno di SGI o chiunque altro che mostrare i pregi di OpenGL. Era semplice da usare, potente, ed era utilizzato da qualche anno: questo significava un’enorme mole di documentazione disponibile.
Man mano che il tempo passava il progetto Fahrenheit cadde completamente nelle mani di Microsoft e venne cessato.
Ancora oggi i produttori hardware supportano OpenGL e contribuiscono a crearne estensioni. Così come ci sono aziende che producono giochi con OpenGL il cui vantaggio è la portabilità su diverse piattaforme.
—
storia recente (fino al 2007):
DirectX 10 sarà implementato SOLO ed ESCLUSIVAMENTE in Vista, il nuovo S.O. microsoft…
Inizialmente si voleva congelare OpenGL alla versione 1.4 emulandolo sopra all’interfaccia Aero di microsoft… Operazione (come visto) già tentata in passato… Alla fine pare che microsoft abbia desistito da questo proposito ma è ancora tutto da vedere!
OpenGL 3.0 è in cantiere: sarà più potente della specifica Directx 10 (almeno sulla carta, si vedrà ); purtroppo arriverà solo fra qualche mese. Le estensioni che permettono di fare tutto ciò che è già possibile con Directx10 sono comunque già presenti nelle schede nVidia!
[¹] API, Application Programming Interface: Non sono altro che un insieme di funzioni o metodi, con relativa documentazione, che permettono ad un programmatore di utilizzare una libreria o un hardware senza conoscerne i dettagli o il funzionamento interno. Le API sono importantissime nella programmazione: permettono ad esempio di scrivere un programma grafico usando alcune funzionalità delle schede video senza preoccuparsi di come queste funzionalità verranno poi effettivamente realizzate dalla scheda Video.
[²] Rendering: parola utilizzata nella grafica 3D per indicare il processo matematico che trasforma un insieme di dati numerici rappresentanti un ambiente tridimensionale in un’immagine. Esistono diverse metodologie di rendering: quella tradizionale è implementata all’interno delle schede grafiche ed è ampiamente utilizzata in qualunque applicazione 3D. Le due tecniche principali di rendering sono lo “scan-line” e il “ray tracing”.
20 luglio, 2012 at 11:17
Ciao, scrivo per segnalare un errore di battitura:
nella frase seguente “hai” andrebbe sostituito con “ai”.
Nell’estate del ’97 microsoft annunciò che NON avrebbe fornito le licenze per il codice MCD e hai produttori non sarebbe stato permesso di rilasciare i propri driver per windows 98.
10 novembre, 2009 at 8:33
@mastro: non mi sono fatto più vivo su questo URL perchè è successo quanto non mi sarei mai aspettato ovvero il 16 Marzo 2009 è morta mia madre di cancro.
inoltre non trovavo più l’URL e sino ad oggi sono stato sommerso di lavoro.
comunque non dedicherò più il mio tempo a temi che seppur scottanti, che riguardano il copyright, le reti, le libertà digitali, gli oligopoli, le corporazioni…. non lo farò perchè in ambito informatico si pensa solo a programmare e ce nse fotte di difendere la porpia libertà e non vedo il motivo per cui io debba essere il militare che va in prima linea per difendere le libertà degli altri, quando a nessuno non gli fottee niente di ciò.
c’ero i presuppposti per fare una lista civica e portare avanti i nostri problemi, ma a quanto pare sarebbe stato come prima, ovvero farsi il culo e gli altri stanno a guardare.
No grazie, questo non è il modo di portare avanti i nostri problemi e non ci può essere una sola persona che si occupa di tutto.
si automotivassero e l’etica se la facessero venir fuori.
Quando daranno prova di avere a cuore i nostri problemi e saranno motivati oltre che a programmare a dedicarsi a tali scopi, allora è possibile che riconsidererò la posizione che ho preso.
Io nel passato sono stato un programmatore e non vedo il motivo per cui io debba rinunciare a programmare, quando loro programmano e rinunciano agli aspetti etici che invece io ho sempre avuto
e a cui tengo molto, ma non può esserci sempre e solo una persona che si deve sacrificare per gli altri, Richard Matthew Stallman si è sacrificato per noi e io non voglio fare la fine di Richard Matthew Stallman, ovvero rinuciare a programmare per difendere le libertà di chi non le vuole, dunque ognuno si facesse anche una parte di tale lavoro.
io ho programmato negli anni scorsi in BASIC, COBOL, RPG, SQL, SQL, C C++ HTML
Saluti Paolo
22 febbraio, 2009 at 0:15
si può dire che questo è il mio lavoro e almeno nel tempo sta portando i propri frutti. potrei già pubblicare qualcosa a riguardo ed anche nel passato ci avevo provato, sicuramente il materiale che ho potrebbe aiutarmi a fare un’integrazione, ma forse non altrettanto sufficiente, semprechè non decida di fare almeno due pubbicazioni, il tempo ed il modo in cui riuscirò ad organizzare il lavoro, permetterà anche a me di capire come doversi comportare a riguardo
saluti e grazie ancora per la risposta
p.s: tempo fa ho visto il film The Corporation di Mark Archbar e Jennifer Abbott
guardatevelo.
21 febbraio, 2009 at 14:30
@paolo
ri-recupero dallo spam! (probabilmente a wordpress non piaci proprio 😛 )
non so cosa avrei dovuto riadattare dal tuo messaggio precedente. l’ho lasciato esattamente come lo avevi scritto!
grazie ancora del contributo!
Neppure a me piace l’andazzo di ubuntu. Io uso debian e non ci trovo questa gran differenza da ubuntu…. tranne forse un installer più “user friendly”.
beato te che hai tempo libero nonostante il lavoro! 🙂
a presto e grazie ancora!!!
19 febbraio, 2009 at 4:42
io faccio tuttociò durante il tempo libero e ne ho sempre molto, sono contento che ti sia piaciuto, anche se prima di metterlo, potevi cancellare qualcosa ed adattare meglio la sintassi, comunque non fa niente se è finito nello spam, sono contento che queste info possano essere utili.
affrontai questo argomento non in un dettaglio di questo genere al GROLUG, partii da Roma per andare gratuitamente a parlarne, anche se mi volevano pagare per il biglietto di andata e ritorno.
ci accordammo per molto meno, una pizza ed una birra che ci andammo a prender tutti alla fine della conferenza, per l’occasione era venuto ad ascoltarmi anche mio padre che vive nella provincia di Grosseto.
avevo lavorato così tanto a queste mie ricerche che sono stato sveglio tutta la notte per studiarlo e quando ero in treno, ho continuato a studiarmelo.
non ho una gran bella esposizione orale, ma con tastiera alla mano o con carta e penna potrei scrivere papiri, diciamo che è un dono di natura per certi versi.
mio nonno nonostante fosse stato dirigente di banca era stato pubblicista ed in qualche occasione aveva conosciuto Indro Montanelli, mio padre gli piace scrivere in merito ai valori e tradizioni della Toscana, io invece che ho amato ed amo l’informatica, non posso far altro che documentarmi, perchè voglio fare una documentazione che abbia un senso, senza che si inizi da una parte e si finisca in un’altra come accade con wikipedia.
infatti la mole di lavoro è gigantesca e non finirò di parlare di BSD, non perchè lo ami, ma perchè c’è molto da dire, dunque lo dovrò dividere in più parti, io penso che gli amici del GROLUG ne avranno a male perchè finora non ho pubblicato il materiale, ma c’è molto da dire e se ciò che ho scritto può sembrare una miniera, c’è molto altro materiale da dover raccogliere, documentare ….
non credo che lo pubblicherò tanto facilmente, non perchè non voglia, ma perchè vorrei presentare un buon lavoro e che si possa apprezzare
così sono informazioni che trovano senso solo perchè c’è una sintassi, altrimenti c’è molto altro ancora.
non abbiatene con me, anzi chiedete alla Carnegie Mellon University, University Of Utah, University Of California Berkley, University Of Rochster, Massachvsetts, Institvte Of Technology, ex DARPA, governo americano prima col Presidente JFK poi con Nixon di spiegare la natura dei finanziamenti per le Università , per lo sviluppo di una MILNET….. sviluppo dei sistemi operativi…
comunque non fa niente se era finita nello SPAM.
about GNU/STEP su http://gnu.org
GNUstep Developers Wanted
GNUstep is a fully-functional object-oriented development environment. We need developers to write and port applications to GNUstep so that we can make it a great experience for users. See http://www.gnustep.org/ for more information.
GNU/STEP dovrà migliorare molto, ma come sistema operativo per quel che ho visto sembra essere buono, io non mi esprimo su ciò che non ho provato, nonostante debba migliorare la grafica, dispone già di software pronto all’uso. ho notato che ne ne sono pochi, dunque si possono compilare quelli attuali e portarli sotto GNU/STEP, evitando di portare software che non sia GPL, visto che si sta cercando di fare un sistema operativo pulito.
per quanto mi riguarda io sarò pronto alla migrazione, sto osservando
e continuo ad essere più fiducioso, non mi è piaciuto Mark Shuttlework
colui che ha creato la ubuntu, dicendo che non aveva mai visto un windows 7 così performante, non perchè io debba convertire la gente all’uso del software libero, anche se ciò non sarebbe un male per la società , ma tale leccata a microsoft non mi è piaciuta affatto, infatti ora microsoft è pronta ad un dialogo con ubuntu per guadagnare quella porzione di mercato che ha perso.
io non so come gli utenti la prenderanno, so solo che alle spalle ci sono tanti packages *.deb e se ubuntu vuole un dialogo con microsoft
che si creasse la sua distribuzione, con i packages *.ubu, senza fruire
della comandistica di GNU/linux Deb-Ian, GNU/linux Deb-Ian è in tutto e per tutto una distribuzione GNU/linux free software, non trovo giusto questo comportamento nei confronti di chi ha sviluppato una distribuzione ed ora va cercando intese commerciali con chi sviluppa software non libero.
a tal punto se proprio dovete usare GNU/linux ubuntu, usate GNU/linux gNewSense http://www.gnewsense.org/static/homepage oppure altre distribuzioni come
GNU/linux Ututo http://www.ututo.org/www/
GNU/linux dynebolic http://dynebolic.org/
GNU/linux Musix http://www.musix.org.ar/
GNU/linux Blag http://www.blagblagblag.org/
GNU/Step http://io.debian.net/~tar/gnustep/
GNU/Darwin http://www.gnu-darwin.org/
GNU/KFreeBSD http://www.debian.org/ports/kfreebsd-gnu/
GNU/NetBSD http://www.debian.org/ports/netbsd/
GNU/linux Debian http://www.debian.org
FreeBSD http://www.freebsd.org
NetBSD http://www.netbsd.org
OpenBSD http://www.openbsd.org
almeno queste non scendono a compromessi !!!!!
18 febbraio, 2009 at 23:35
@Paolo del bene
prima di tutto ti chiedo scusa perché il tuo commento era finito nello spam e me ne sono accorto solamente ora!
quindi ti ringrazio per il tuo interessantissimo contributo…
sei una miniera di informazioni!
Come hai fatto a trovare il tempo per fare tutte queste cose?
da quando ho iniziato a lavorare non riesco neppure più ad aggiornare il mio blog.
quindi, secondo le tue previsioni, GNU/Step sarà presto un nuovo sistema operativo totalmente libero e più efficiente di tutto ciò che c’è ora in circolazione? se ho capito bene
Grazie ancora.. davvero interessante! Non sapevo nulla di molte delle cose di cui hai parlato
12 febbraio, 2009 at 22:21
è una fissa che ci debbano essere i giochi e molti si lamentano che non ci sono per GNU/linux. Almeno per me i giochi non sono di vitale importanza dato che i ruoli che sono riuscito a ricoprire in Italia dal 2002 ad oggi riguardano le conferenze annuali a proposito del software libero.
sono ben 27 anni che sto con le mani sul computer, prima da programmatore,
poi dal 2002 ho maturato interesse a riguardo del software libero, dedicandomi ad ogni tipo di iniziativa che poteva contrastare il software non libero.
Nel 2004 aprii il mio primo http://gnu-linux.it e pensavo di aver fatto già molto
Nel 2005 ed esattamente il 23 Dicembre ero in #lugroma e si stava affrontando
il tema dei computers portatili, che ahimè vengono venduti con windows, non stetti tanto a pensarci ed iniziai a contattare tutte le hardware houses.
all’epoca avevo pubblicato tutta la documentazione sul forum di linux&c e quando vidi che si iniziava a cancellare quanto scritto, decisi di farmi il backup
di tutto il lavoro, altrimenti non starei qui a parlarne.
scrissi a Patrizio Tassone p.tassone@oltrelinux.com, ma disse che l’argomento era già stato ampiamente discusso sulla rivista, avendo tutte le riviste dal numero 1 fino ad oggi, quanto esposto è una farsa da parte di Patrizio Tassone
comunque nel 2006 iniziai a scrivere a proposito del software libero vedasi
http://paolodelbene.pbwiki.com/hacking
nel 2007 http://paolodelbene.pbwiki.com/Intervista+a+Richard+Matthew+Stallman+
nel 2008 http://paolodelbene.pbwiki.com/FrontPage
nel 2008 http://paolodelbene.blogspot.com/2008/08/01-archive.html
nel 2008 http://gnuandlinux.blogspot.com
ed altri che momentaneamente non ricordo gli URL’s
fu così che fra il 2006 ed il 2008 su una pagina in html e poi nel 2008 pubblicai tutto su blogspot.com dicendo come si potevano ottenere i rimborsi di windows,
quali computers portatili acquistare senza doversi far rimborsare, chi li vende con GNU/linux oppure con FreeBSD, NetBSD, OpenBSD.
ora che siamo nel 2009, all’incirca ci saranno 50 hardware houses che ci danno ascolto e pensare che solo nel 2005 erano 10.
su microsoft e le sue malefatte ne so molte e potrei scrivere veri e propri papiri, proprio ieri ho scritto a Naomi Klein dicendogli se ha qualche informazione particolare su microsoft a parte i licenziamenti, il suo pessimo andamento borsistico al NASDAQ.
facendo ricerche ed organizzando il materiale, impaginandolo, mettendoci loghi, testo non si finisce mai.
ho iniziato ad Agosto 2008 a scrivere riguardo ai sistemi operativi e mi sono imbattuto in Xerox, Apple, Microsoft.
il resto del lavoro è dedito alle università americane che hanno dato vita a progetti come BSD, Mach…. se BSD è un sistema operativo con kernel monolitico nato c/o berkeley university of California, non si può dire altrettanto di Mach che è un microkernel, ma la sua eredità proviene da BSD, si potrebbe dire una riscrittura di BSD con microkernel.
il caso vuole che si sviluppino 4 ports per il microkernel mach nato c/o cmu university e terminato c/o utah university è stato ben visto da una compagnia americana che ci ha messo il suo logo: apple computer cupertino.inc
per molti anni sarà usato da apple principalmente bsd, poi quando steve jobs lascerà la apple per creare la next.com, avrà bisogno del microkernel mach
su cui andrà a sviluppare l’ambiente grafico.
si da il caso che nel 1983 Richard Matthew Stallman decide di siluppare un sistema operativo totalmente software libero la data di riferimento dell’Annuncio Iniziale risale al 27 Settembre 1983, durante ill periodo che va dal 1983 al 1991 pensarono di scrivere un microkernel, poi chiesero alla cmu, la stessa università cui ha fatto riferimento la apple computer cupertino.inc, se potevano integrarlo come software libero, ma non poterono farlo per motivi di licenza.
se avessero usato GNU con il microkernel mach, avrebbero regalato 8 anni di fatiche alla apple computer cupertino.inc
fu solo nel 1991 che iniziarono a metter GNU con tanto di gestore di processi servers HURD che in origine si sarebbe dovuto chiamare Alix, insieme al microkernel mach per ottenere GNU/HURD.
fu solo nel 1991 che linus torvalds benedict scrisse il kernel monolitico linux ricorrendo ai tools della fsf.org
come dicevo prima next fondata da steve jobs andrà avanti fino al 1997-1998, anno in cui lo stesso sviluppatore del microkernel mach che aveva lavorato allo sviluppo del microkernel mach c/o carnegie mellon university, poi alla next
ed infine alla apple mise insieme il lavoro (della next appena acquisita da 1 dei 2 fondatori della apple computer cupertino.inc steve jobs) ed elaborò mac os x.
ma durante il periodo che va dal 1981 al 1996 la next che aveva realizzato nextstep, fece un partnership con la sun microsystems per lo sviluppo di openstep, sistema che la next avrebbe sviluppato e sun microsystems acquistato per farci funzionare le applicazioni della sun microsystems
alla sun microsystems ancora stanno bestemmiando, altrimenti non si spiega come sun microsystems abbia per decenni usato BSD, chiamandolo solaris.
ovviamente l’esperienza maturata prima sulle workstation dotate di cpu 680×0 (68040), poi suile ultra sparc della sun microsystems, portò la apple a farsi sviluppare il firmware del bios da sun microsystems , e facendolo chiamare OpenFirmware, in sun microsystems si chiamava OpenBios, una coincidenza alquanto strana.
poi sun microsystems gli adatto java, per l’ambiente grafico apple ha fatto riferimento alle qt libraries sviluppate prima da trolltech.com, diventata poi nokia.
infatti kde è prossimo al decesso, visto che nokia vuole dismettere le qt libraries, vorrò vedere come faranno apple e microsoft senza le qt libraries
a parte ciò se andiamo a vedere cosa realmente apple abbia fatto è praticamente nulla, altri componenti di mac os x sono cocoa, quartz e carbon, ma il bello è che apple computer cupertino.inc ha fatto un ibrido e mal funzionante che è la combinazione del microkernel mach + kernel monolitico BSD, se andiamo nel dettaglio ovvero come sono formattati i volumi si scoprirà che sono UNIX SVR_2 ovvero standard posix, come sul vecchio unix system V
e come adottato da sun microsystems
chi si è avvantaggiato di nextstep per il proprio tornaconto è stata la microsoft
guardasi l’ambiente grafico di windows nt
ma la cosa bella è che da anni si sta lavorando a GNU/STEP una versione di nextstep totalmente software libero integrante il microkernel mach ed ora che sgi.com e la fsf.org sono addivinuti ad un incontro, GNU/STEP monterà OPENGL.
3 dicembre, 2008 at 1:34
[…] Esempio? Storia di un ingiustizia che paghiamo tutti: OpenGL vs DirectX L’importante è avere un titolo Pensa a quanti sono i gamer e spaventati. Il mondo dei giochi condiziona le sorti di un OS Poi […]
1 dicembre, 2008 at 16:31
[…] Smith Non metto in dubbio il fatto che debbano essere gli sviluppatori di gioco, a rendere il titolo compatibile con i vari Sistemi Operativi, ma credo che in fondo ci siano motivi, oltre che di concorrenza e di sponsor, anche pratici e di programmazione (provo a immaginare). Riguardo la lista e le altre cose, non ho mai sentito nulla del genere ma ovviamente è solo perchè a un certo punto ho smesso di documentarmi e di saperne di più su Linux, ma anche se fosse questione di aggiungere i programma alla lista, non è comunque scontato, sarà facile sicuramente ma sempre dovrai fartelo da dire da qualcuno, altrimenti stai li a cliccare svariate volte sul File senza alcun successo. Felice di sentire che ci sono comunque software che si installano col doppio click. Sono daccordo che molte funzionalità siano ristrette a pochi smanettoni, comunque per il fattore giochi voglio proporvi un articolo che riportai anche in passato. Chi ha tempo se lo legga, ne sarei felice. Storia di un ingiustizia che paghiamo tutti: OpenGL vs DirectX L’importante è avere un titolo […]
26 agosto, 2008 at 19:11
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.
17 agosto, 2008 at 22:30
[…] 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. […]
15 agosto, 2008 at 18:10
bell’articolo.. complimenti 🙂
26 luglio, 2008 at 7:36
da vedere
Crysis effects on OpenGL
26 luglio, 2008 at 7:23
piattaforme Opengl:
MS Windows (a malavoglia)
PS 3
PS 2
PSP
Linux
Apple OS X
Wii
beos
solaris
piattaforme dirextx:
MS Windows
Xbox
Xbox360
monopolio microsoft?
15 luglio, 2008 at 20:05
Io sono pro Microsoft, o meglio, pro DirectX
Chiamatela Micro$oft, ladra, azzardatrice, windows fa schifo e tutto quello che volete.
A mio parere, però, un solo prodotto di Microsoft è uscito veramente buono: Direct3D9 e 10, e la comunità di OpenGL è troppo indietro.
Anzi, mi azzarderei anche a dire che OpenGL 3.0 avrÃ
Shader Model 4.0 beta, ma senza Geometry Shader
StreamOutput non implementato, qualche cosuccia mancante, e una marea di todo.
Sto scherzando ovviamente!
18 giugno, 2008 at 20:13
@Giuseppe!
ah..
penso sia colpa mia….
per qualche ragione ho scritto “instable” invece che “installable”….
correggo subito
grazie
18 giugno, 2008 at 11:42
Salve a tutti, vorrei precisare che ICD non vuol dire Instable Client Driver ma bensì INSTALLABLE CLIENT DRIVER, lo dico perchè sopra qualcuno si era chiesto come mai l’avessero chiamato INSTABLE. Se avete dubbi cercate su Google o su Wikipedia…
Ciao
28 Maggio, 2008 at 20:29
@PieruZzo
grazie del commento e dei complimenti!
spero di risentirti sul mio blog
ps: che DX10 sia utilizzata per “dare un motivo” a vista non ci piove 😀
28 Maggio, 2008 at 6:09
Vi ringrazio per l’esauriente discorso && chiarimento riguardo la storia di OpenGL vs DirectX.
Intervengo per fare 2 precisazioni:
a- le schede 3dfx VooDoo dalla versione 1 alla 2 ad esclusione delle VooDoo Banshee potevano essere utilizzate nella forma 1+1 su slot PCI , accoppiate alle più obsolete schede 2D, e non quindi dalla versione 5.
b- il motore di UNREAL aveva supporto nativo glide, così non era per Quake, ed entrambi supportavano software rendering, OpenGL e Direct3D.
@soggetto senza nome
Non credo che tu sia così informato da poter esprimere giudizi su sistemi operativi vari.
@mastro && MAH
le vostre argomentazioni hanno sapore di cultura, complimenti davvero
[ot]
Nel lontano 1999 mi sono accostato alla filosofia del sorgente aperto, trovando quindi molto scorretto da parte di produttori di hardware e software la chiusura dei loro sorgenti.
La goccia che ha fatto traboccare il vaso nei confronti di Microsoft è stato il furto di libertà perpetrato attraverso accordi commerciali con i maggiori produttori di hw, affinchè producessero sistemi adatti solo al sw della stessa M$.
Rammento la bufala del famoso progetto PALLADIUM, che con Vista ha avuto, anche in modo molto molto blando, un suo *inizio*.
DX10, credo che servano un pò da manovra per far morire XP, che pur avendo i suoi sostenitori, DEVE essere rimpiazzato da VISTA.
So di aver scritto cose già sentire, notizie trite e ritrite, quindi mi scuso per lo pseudo sfogo.
31 marzo, 2008 at 12:01
[…] Storia di un’ingiustizia: OpenGl vs DirectX, Wikipedia (EN) […]
10 marzo, 2008 at 15:28
[…] poi considerato come DirectX ha vinto su OpenGL sarebbe giusto che OpenGL torni in […]
26 dicembre, 2007 at 3:25
@psychomantum
ho evitato di rispondere ulteriormente infatti… e ho lasciato qui il suo commento in bella mostra così che siano i lettori stessi a giudicare..
purtroppo si sà che la mamma degli imbecilli è sempre incinta
non che mi aspettassi molto da uno che manco capisce che “L’importante è avere un titolo” è un gioco di parole
25 dicembre, 2007 at 1:56
quella lista sembra scritta da una scimmia urlatrice..
mandrake? mandrake è morta da anni, casomai esiste mandriva.. poi con la moda ubuntu penso che mandriva stia molto sotto..
è una classifica senza cognizione di fatto :S
1 novembre, 2007 at 23:20
ok dai kiedo umilmente perdono, ho passatto tt la giornata di oggi a “elaborare” il tuo commento a cercare cenni sui vari OS e a confrontare le loro caratteristiche, quindi arriva ad una conclusione, che spero accetterai anche tu visto ke è il più oggettiva possibile e anche perchè se non cia aiutiamo fra noi Unix-Based la comunità di utenti winzozz ci divorerà fino all’osso
Allora ripetiamo ok??
MAC OS X 10.5 (nome in codice leopard)
newton OS 2.1 ( mi spiace ma è un dato di fatto)
Linux Mandrake (mi sono accertato è mandrake)
FreeBSD (diamo spazio agli Unix-Based)
ReactOS (ma quando finisce stà ALPHA!!)
AmigaOS ( nuova entrata che và a sostituire il BeOS)
Arch Linux ( non vale quanto l’Amiga OS o il React OS mi spiace)
MAC OS 9 e Windows 95 ( uno che non reggeva il multitasking preempitive [MAC OS 9] e l’altro che c’ha fatto patire il celeberrimo Plug and Pray [Windows 95] ovvero inserisci e prega:D)
Windows Vista ( completamente basato su NT e questo dovrebbe essere l’avversario di Unix…. Siamo a cavallo!!)
Adesso che dici và meglio??
1 novembre, 2007 at 3:12
@tizio del commento precedente
non sono d’accordo per nulla con la tua lista (windows 95 prima di mandriva e mac os 9??? prima di frebsd ??? prima di arch linux? ecc… ma daiii….)
31 ottobre, 2007 at 15:18
WoWWWW!!!!!!!!!! Articolo davvero bellissimo!!! bravo bravo BRAVO!!!
Ma ki è l’imbecille ke ha definito MAC OS X “linux Based” LINUX BASED!!! Stai facendo venire i crampi a steve Jobs per questa affermazione!! si dice UNIX-BASED!!
Comunque ottimo riassunto storico, molto competente ed interessante, fra l’altro và aggiunto che l’openGL ormai è molto sviluppato nei giochi sopratutto per OS X anche grazie a nuovi software sviluppati da activision si può fare il porting da giochi winzozz a giochi MAC OS X basati su openGL in un attimo!
RICORDA UNIX-BASED!!!!!!!!!!!!!!!!
linux è bello ma Mac OS X è un altro pianeta
Think different
P.S. in una classifica fra i migliori 10 OS della storia c’è, adesso con l’uscita di leopard::
MAC OS X 10.5 (nome in codice Leopard)
Newton OS 2.1
Windows 95
Linux Mandrive ( credo che ora si chiami Mandrake ma non ne sono sicuro)
Windows Vista
MAC OS 9
FreeBSD
ReactOS(in stato di alpha “permanente”)
BeOS
Arch Linux
7 ottobre, 2007 at 8:11
[…] cheung31 wrote an interesting post today onHere’s a quick excerpt […]
1 ottobre, 2007 at 20:59
@MAH
il tuo discorso fila direi 🙂
l’unica cosa è sugli standard: è vero che uno standard portato avanti da uno solo può essere più innovativo di uno standard a tavolino… però ci dev’essere un qualche obbligo sui formati secondo me: se vuoi fare un formato proprietario devi quantomeno fornire senza obblighi le specifiche perché altri possano implementarlo!
il motivo è semplice: la “guerra” si deve combattere sull’innovazione e la qualità , non sulla chiusura dei formati allo scopo di legare i clienti
trovo che da questo punto di vista funzioni molto bene OpenGL: ATI e nVidia innovano usando OpenGL e si combattono tra loro cercando di creare nuove tecnologie prima dell’avversario! Dopo un po’ di tempo passa l’ARB e crea lo standard…
Se da una parte prima di avere lo standard passa un po’ di tempo se non altro viene mantenuta la competizione, l’innovazione e viene comunque garantita l’apertura dello standard e l’interoperabilitÃ
DirectX invece viene accordata con i produttori di schede video (in particolare con ATI) da Microsoft… È comunque portata avanti dai produttori… ma lo standard è chiuso! Nessuno se non microsoft stessa può decidere cosa farne. Se microsoft decide che per avanzare tecnologicamente si deve acquistare Vista tutti sono obbligati a seguire questa scelta.
Il problema qui è di fondo… e secondo me non è più esclusivamente un problema di “principi” o “filosofie”. È un problema tangibile anche a chi non abbraccia i principi del software libero, degli standar aperti e dell’interoperabilità secondo me.
spero comunque che OpenGL 3.0 riprenda piede e che un giorno Microsoft sarà obbligata a rendere DirectX multipiattaforma così che la concorrenza (e quindi l’innovazione) diventi spietata!
Avremmo solo da guadagnarci tutti (tranne Microsoft :P)
mi spiace ma non conosco una live con quello che hai chiesto, anche se non dubito che esista
1 ottobre, 2007 at 9:26
Anche a me fa piacere 🙂
Ho lavorato su Eclipse per un annetto, ma l’ho sempre usato come IDE java su win32. Non e’ male a parte il fatto che la configurazione di default non e’ il massimo (ma quello in 5 minuti lo risolvi).
Ci sono alcune cose che non mi hanno convinto al 100%. Non e’ veloce come altri IDE, importare un progetto non e’ una operazione molto pulita, ho visto strumenti di debug migliori. In generale comunque e’ un ambiente molto buono, almeno secondo me! In C++ non l’ho mai provato.
Visto che ci sono… sai se esiste una distro live che contenga eclipse, OpenGL e SDL con la quale mi possa divertire a programmare qualcosa? La DevelopGo e’ ferma al gcc 3.x e non ha SDL. Knoppix Live DVD dovrebbe averle ma.. e’ un DVD.. non mi serve tutta quella roba.
Mi serve solo una distro live che abbia l’ultima versione del gcc, Eclipse con supporto C++, librerie grafiche e magari pure OpenAL.
E’ vero che non c’era bisogno di creare wmv e wma, e’ anche vero che cmq Media Player con i codec puo’ leggere divx, xvid, mpg, etc.
La soluzione piu’ semplice e’: tu vuoi mettere un media player nel tuo sistema? Benissimo, e’ giusto che un sistema operativo abbia un lettore multimediale. Per evitare di far girare tutto il mondo attorno a wmv, che e’ quello che preoccupa, ti obbligo a fare una scelta:
1- lo metti come componente opzionale in fase di installazione e mi dai la possibilita’ di disinstallarlo
2- se la 1 non ti piace o non e’ possibile, allora ti obbligo ad includere l’ultima versione disponibile dei codec x,y,z.
Se non ti va bene, tu non puoi vendere il software perche’ stai abusando della tua posizione dominante. Non ti faccio vendere vista e poi ti multo, perche’ non serve a niente. E’ un modo per far cassa, un modo per far casino senza risolvere realmente il problema.
A quel punto se il 99% degli utenti usera’ wmv lo fara’ perche’ wmv e’ migliore, non perche’ e’ l’unico codec disponibile. L’interesse dell’autorita’ non deve essere quello di scegliere un formato a prescindere o obbligare gli utenti ad usare divx, deve essere quello di vigilare su un mercato e far si che siano gli utenti stessi a scegliere. L’autorita’ deve garantire la liberta’ di scelta, non deve imporre divx o wmv o altro.
Che il monopolio sia un male siamo tutti d’accordo, che pero’ non tutti i monopoli siano pericolosi allo stesso modo e’ un dato di fatto. Un monopolio hardware e software come voleva fare IBM negli anni 80 sarebbe stato devastante per l’innovazione.
Sul discorso delle GTK sono d’accordo, pero’ bisognerebbe guardare anche l’altra faccia della medaglia. Se tu sviluppi un sistema operativo tuo e’ logico che avrai le tue chiamate di sistema e le tue librerie di sistema che saranno diverse rispetto a quelle di un concorrente, poi possono (devono) esistere delle librerie come che ti permettono di scrivere codice portabile su piu’ piattaforme identificando una serie di features comune.
Tuttavia per sfruttare al 100% le possibilita’ di un sistema, alcune operazioni andranno per forza fatte dialogando con le librerie specifiche per quel sistema. Un esempio banale e’ una GUI. Se un nuovo sistema operativo supportasse la possibilita’ di avere finestre 3d con la possibilita’ di scriversi degli shader per abbellirle a piacimento, magari finestre non rettangolari ma veri e propri modelli 3d, non e’ detto che questa funzionalita’ sia disponibile anche su OSX o Vista o KDE. Se tu volessi usare questa funzionalita’, cioe’ creare un programma che sfrutta al 100% le possibilita’ offerte da questo nuovo sistema operativo, dovresti interfacciarti alle librerie specifiche di quel sistema.
Se invece di copiarsi l’un l’altro questi 4-5 sistemi operativi prendessero strade leggermente diverse, io e te ci troveremmo ad usare GTK che supporta un sottoinsieme comune rispetto alle feature che avresti a disposizione.. la Adobe invece potrebbe permettersi di scrivere 5 interfacce diverse che sfruttano al 100% ognuno dei 5 sistemi operativi. 😦
Gli standard sono una bella cosa, ma ci sara’ sempre battaglia tra chi vuole l’interoperabilita’ e chi vuole solo l’innovazione.
Mettiamo che la nuova versione di office o openoffice abbia la possibilita’ di inserire in un documento un oggetto 3d interattivo. A quale titolo il team di openoffice o Microsoft puo’ imporre che i documenti OpenDocument debbano supportare una cosa del genere? Se altri ritenessero che avere una mesh in un documento di testo e’ inutile.. che dovrebbe fare microsoft (o il team di openoffice)? Nel loro formato proprietario inseriscono questa feature e ovviamente nella conversione ad OpenDocument il modello 3d non viene esportato.
Il problema e’ che lo standard per essere tale deve essere snello e deve concentrarsi su feature comuni. In alcuni periodi lo standard prevarra’ sul formato proprietario, poi l’innovazione fara’ si che un formato proprietario riprenda il sopravvento fino a quando quella feature importante diventera’ comune e lo standard riaffermera’ il concetto di interoperabilita’. 🙂
Ma su questo punto concordo con quello che dice Bill Gates: i veri standard sono quelli de facto (gli standard decisi dal mercato), gli standard de iure (quelli decisi a tavolino) devono essere conseguenti ai primi, non guidare l’innovazione e decidere politiche aziendali.
Mi fa piacere discutere di queste cose, spesso ci si limita a fare come allo stadio… closed e proprietario sono male a prescindere oppure open e’ fatto male o dilettantistico.
La realta’ e’ piu’ complessa, quello che serve IMHO e’ la possibilita’ di governare queste forze e tenerle in equilibrio… abbiamo bisogno sia di interoperabilita’, sia di progetti open per applicazioni chiave, sia di innovazione e aziende che investono per ricercare e sviluppare nuove soluzioni rischiando in prima persona e cogliendo i frutti del loro lavoro. Se una di queste due forze prende il sopravvento e l’altra viene messa a tacere, ci rimettiamo tutti.
Se Direct3D non fosse diventata l’API che e’ diventata oggi, OpenGL non avrebbe avuto questo sviluppo. Per anni OpenGL e’ rimasto fermo perche’ non aveva concorrenti.
Se dai un’occhio ai tempi di rilascio delle versioni OpenGL:
Versione 1.0 – 1992
Versione 1.1 – Non lo so 🙂
Versione 1.2 – Marzo 1998
Versione 1.2.1 – Ottobre 1998
Versione 1.3 – 2001
Versione 1.4 – 2002
Versione 1.5 – 2003
Versione 2.0 – 2004
Versione 2.1 – 2006
Versione 3.0 -2007/2008?
E’ indubbio che se Microsoft non avesse avuto successo con Direct3D, OpenGL non si sarebbe mai innovata cosi’ tanto in cosi’ poco tempo. Avremmo avuto molto software multipiattaforma, ma probabilmente non avremmo avuto tutte le feature che abbiamo oggi.
Tra l’altro pare che la versione 3.0 abbandoni il modello di macchina a stati che la ha sempre contraddistinta.. spero che venga fuori qualcosa di veramente buono! Spero che questo rilanci OpenGL perche’ il modello di macchina a stati era un altro problema non da poco.
Oggi abbiamo 2 API, una multipiattaforma ed una proprietaria, entrambe con feature che 10 anni fa non esistevano nemmeno su macchine da centinaia di migliaia di euro!!! Abbiamo DX10 che si rinnova e OpenGL 3.0 che si stravolge completamente dopo 15 anni di onorato servizio.
Io spero che OpenGL 3.0 non solo sia al pari di Direct3D, ma spero che sia ancora meglio.. spero che Microsoft venga “costretta” a fare ancora di piu’, ancora meglio. Alla fine dalla concorrenza ci guadagnamo tutti, se Direct3D fosse stato un fallimento ci avremmo rimesso tutti, cosi’ come se OpenGL non venisse piu’ sviluppata ci rimetteremmo tutti.
🙂
30 settembre, 2007 at 18:21
@mah
grazie del commento
stavolta devo dire che sono più o meno d’accordo con tutto quello che hai detto quindi mi limiterò a fare qualche precisazione
Microsoft è un’azienda che guarda al profitto. È in regime di monopolio.
Come tutti i monopoli questo è un grosso male per la società .. uno degli scopi primari dell’economia dovrebbe essere quello di evitare i monopoli! E fin qui penso che siamo tutti d’accordo!
A me sta sulle palle Microsoft perché fa cose come quelle che ho descritto qui… E le fa da una vita!
Microsoft ovviamente fa i suoi interessi! Il problema è che non dovrebbe poter fare certe cose… I “cattivi”, se di cattivi vogliamo parlare sono quelli che la lasciano fare… A Microsoft sono “solo” disonesti e approfittatori 🙂 ma quale azienda non lo è? Quando ci sono di mezzo i soldi è difficile che non sia così
Io posso cercare di aprire gli occhi alla gente: di metterli di fronte a ciò che accade o è accaduto e che magari non conoscono… Metto al corrente delle alternative! Poi sta ad ognuno decidere per se stesso se vuol/può seguire dei principi o meno.
ok..
ora ti rispondo all’OT: hai mai provato Eclipse? Dovrebbe essere migliorato parecchio anche nel C++ dalle ultime versioni
riguardo alla situazione con 8 sistemi operativi diversi:
non sono le piccole aziende che devono preoccuparsi delle differenze tra i vari sistemi! Dovrebbero essere chi sviluppa le librerie a preoccuparsi di renderle interoperabili con molti sistemi: le GTK, le QT e molte altre librerie sono multipiattaforma! Gimp funziona su Windows utilizzando le librerie GTK
servono librerie standard e standard per sistemi operativi come lo standard POSIX! Ma soprattutto serve qualcuno che obblighi a seguire questi benedetti standard!
Non posso essere più d’accordo quando dici che è assurdo multare microsoft perché mette un media player nel suo sistema! Non devi permettergli di venderlo! PUNTO!
Che poi un player in un sistema operativo è logico mettercelo (IMHO).. poi Windows Media Player non è un semplice player… (che bisogno c’era di creare i wmv e i wma? esistevano già altri formati standard!)
Concludo dicendoti che sono felice che questa discussione iniziata in modo un po’ brusco sia proseguita in modo calmo e non si sia tramutata in un litigio
30 settembre, 2007 at 17:56
Beh, Microsoft non ha potere sui driver che vengono rilasciati per le periferiche dai produttori delle stesse.
Microsoft al massimo puo’ rifiutarsi di certificare i driver, piu’ di tanto non puo’ fare. Anche oggi ci sono versioni di driver non certificate da Microsoft, non c’e’ modo in cui Microsoft possa vietare a chicchessia di sviluppare una dll chiamata OpenGL32.dll. 🙂
Microsoft semmai puo’ fare la furba, esattamente quello che ha fatto! Cioe’ dire che non ha intenzione di rilasciare un Client Driver completo affermando: se volete usare il nostro Client Driver vi prendete il mini, altrimenti divertitevi a scrivere tutto il vostro driver da zero… se ce la fate!
Semmai accuso Microsoft di comportamento scorretto quando prende una tecnologia sviluppata da altre societa’, la rende incompatibile e te la fornisce senza dire niente. Questo e’ un comportamento che andrebbe severamente punito: se io faccio uno standard aperto tu non ti puoi permettere di sfruttare la tua posizione dominante per rovinare la tecnologia che ho creato o “impossessartene” o metterti in una situazione nella quale mi derubi della possibilita’ di decidere che direzione deve prendere. Su queste cose Microsoft andrebbe bastonata pesantemente, intendo anche vietare la distribuzione di queste tecnologie, inclusi tutti i prodotti che le usano (hai una tua implementazione strana di HTML o JVM o altro? Non la rilasci. Explorer la usa? Non lo puoi rilasciare. Il tuo OS usa explorer? Niente OS), non fare multe perche’ trovi windows media player su Vista quando in 2 minuti puoi installare uno dei 1000 player audio/video disponibili e sei a posto.
Su OpenGL:
Il problema e’ che l’emulazione software avviene anche per operazioni che fanno parte dell’API, non per le estensioni che o sono supportate o non lo sono.. almeno fino a quando una estensione non viene inclusa nella release successiva dell’API (come il multitexture dalla 1 punto qualcosa). Il motivo per il quale Sony non ha scelto OpenGL e’ proprio quello.. alcune parti dell’API sono obsolete, inutili.
Che tu dica che l’idea di lavorare su una API proprietaria non ti piaccia e’ legittimo.. anzi e’ piu’ che legittimo. Non si puo’ pero’ pretendere che Microsoft sia obbligata ad aprire la propria tecnologia a tutte le piattaforme. E’ giusto che chi investe su una tecnologia possa decidere le sue sorti. Se tu sviluppi un tuo motore 3d e’ giusto che sia tu a venderlo, a stabilirne il prezzo e a decidere le piattaforme da supportare. Se tu decidi di aprirlo, se decidi di regalarlo, se invogli altre persone ad estendere il tuo motore.. e’ una tua lodevole scelta ma nessuno puo’ comunque obbligarti a farla.
La cosa che mi lascia perplesso dei discorsi come il tuo ma portati all’estremo (chiarisco: non il tuo discorso che e’ legittimo, mal’estremizzazione che qualcuno fa affermando che tutto deve essere multipiattaforma, aperto, gratis e che microsoft “e’ il male”) e’ che mi sembra che manchino di prospettiva.
Io sono contento che OpenGL giunga alla versione 3.0. Perche’ ho una scelta. Perche’ posso decidere la piattaforma (o le piattaforme) di riferimento, perche’ non sono costretto ad usare una sola API (magari legata ad un OS, appunto). Detto questo comprendo che una persona che usa linux possa preferire che OpenGL si affermi o che anche in ambiente win32 preferisca non usare DirectX per questioni proprie.. anche solo di principio! Che c’e’ di male nel fare una scelta di principio? La programmazione e’ anche stile, “filosofia”, modo di esprimersi. Se per principio uno si trova meglio con una API, che continui ad usarla!
Non mi piace pero’ il fatto che qualcuno pretenda (non tu, dico il clima che si respira in certi fanatici dell’open source) che una azienda quotata in borsa, che ha come scopo il profitto, faccia scelte che favoriscono i suoi concorrenti.
Mi piace ancora meno pensare ad un mondo nel quale ci sono 5 diversi sistemi operativi nessuno dei quali ha piu’ del 25% del mercato.. sarebbe un inferno. Sarebbe un inferno perche’ molti piccoli sviluppatori sparirebbero, visto che per quanto possa essere fattibile fare un porting da una piattaforma all’altra questo ha un costo. E se per raggiungere l’80% del mercato e vendere lo stesso numero di copie devi fare 4 versioni diverse.. beh.. sono costi che non tutti possono permettersi. Certo che Adobe o Discreet non avranno grossi problemi ma il piccolo sviluppatore si.
Allo stesso modo mi sta bene la filosofia di donare una applicazione o un sistema operativo, mi sta meno bene il fatto che questo venga esteso a tutto campo. Non tutti i progetti hanno la stessa importanza di un eclipse, di un openoffice o di un firefox. Penso che se una persona lavora su un prodotto per 8 ore al giorno per 2 anni della sua vita.. beh.. abbia il diritto di chiedere dei soldi senza per questo doversi vergognare o .sentirsi dire che il dovrebbe regalarlo al mondo intero. Altrimenti solo i figli di papa’ o quelli che vincono al superenalotto potrebbero permettersi il lusso di fare i programmatori… 🙂
Sulla sorte di OpenGL 3.0.. la fortuna e’ proprio che i ragazzi che comprano non sanno la differenza. DirectX o OpenGL per loro pari sono e se per XP c’e’ un gioco che ha una grafica migliore di quella per Xbox360.. a loro non interessa se usa OpenGL! Gli interessa solo il risultato. 🙂
OT: Non mi trovo bene su linux per una serie di motivi, per esempio non esiste un tool di sviluppo di livello paragonabile a visual studio.
Non ho mai avuto problemi ad utilizzare ambienti di sviluppo non microsoft, ai tempi del dos ho usato c/c++ di borland e watcom perche’ erano migliori del microsoft c. Ad oggi non c’e’ un tool dello stesso livello del c++ made in microsoft.. tra l’altro adesso e’ disponibile anche la versione express che e’ gratuita. (Nota: se qualcuno ti dice che puoi sviluppare solo per .net dice il falso… e’ possibilissimo usare la express per sviluppare applicazioni native win32, e’ sufficiente tirare giu’ il platform sdk dal sito microsoft e configurarsi l’ide in modo appropriato 🙂 ).
Non mi piace di linux il fatto che ci siano differenze sostanziali tra varie distro che possono creare problemi, non mi piace il fatto che alcune operazioni siano macchinose visto che nel 99% dei casi non mi servono. Ma quello e’ un caso personale, se fossi amministratore di sistema probabilmente direi il contrario! 🙂
Per esempio io uso GIMP (anche se l’interfaccia.. va beh..) e ovviamente non sono un grafico. Posso arrivare a dire che per me avere GIMP e avere photoshop e’ lo stesso visto che ci faccio veramente poche cose.. pero’ mi rendo conto che se uno di lavoro fa il grafico la differenza si nota eccome. Ecco lo stesso vale sia per visual studio e kdevelop o per linux e windows.
Poi come ogni cosa secondo me si tratta di fare un lavoro con criterio. Se devo sviluppare qualcosa su win32 uso direct3d, se deve essere multipiattaforma mi scrivero’ un renderer opengl. L’importante e’ fare le cose per bene (flessibili) poi a seconda di quello che serve verrano scelti gli strumenti piu’ adatti.
Se poi qualcuno sviluppa un motore 3d che puo’ girare solo su DX9 e se volesse usare OpenGL dovrebbe riscriverselo tutto invece di reimplementare qualche classe.. beh evidentemente non sa fare molto bene il proprio lavoro! 🙂
30 settembre, 2007 at 14:11
@Mah
grazie per il commento più “mite”
io sono piuttosto giovano rispetto a questi fatti… quindi non posso “ricordarmi” quel che trovo lo leggo nei libri, su web e mi viene raccontato da gente che l’ha vissuto
riguardo al driver SGI l’Installable Driver
Microsoft aveva affermato che chi voleva utilizzare OpenGL avrebbe dovuto utilizzare il SUO Driver
solo quando questo si è dimostrato altamente inefficiente SGI ha cominciato a produrre un Driver per windows (ricordiamoci che Microsoft faceva parte dell’ARB)
riguardo la scelta sulle estensioni: se non c’è l’estensione non c’è e basta! non la emulo io mi ritengo perfettamente d’accordo…
andare in emulazione software vuol dire piombare in un attimo a 3fps se non meno! Credo sia meglio controllare se un estensione sia presente o meno e decidere il da farsi
spesso le “ultime estensioni” sono quelle proprietarie… quindi se si possono usare per migliorare le prestazioni o la qualità bene, altrimenti meglio disabilitare tale funzione o scriverne una versione software molto semplificata
il vero problema è che spesso chi programma giochi o comunque applicazioni 3D non conosce a fondo la teoria che sta dietro alla grafica 3D e se non ha un driver che emula il comportamento della funzione che ha chiamato non sa come riprodurla ne che effetti può avere l’omissione… IMHO
sono d’accordo con te nel dire che OGGI DirectX è un’ottima API! Quel che ancora non mi va giù di DirectX è la sua natura proprietaria… una cosa del genere dovrebbe essere uno standard! Disponibile su tutte le piattaforme e i sistemi operativi… e non seguire le scelte commerciali di un monopolista (che comprendono anche la sola inclusione nell’ultimo fiammante sistema operativo prodotto)
Io non voglio dire che OpenGL sia meglio: dico solo che lo era agli inizi, dico che ha perso SOPRATTUTTO a causa di come si è mossa microsoft! non ho mai voluto affermare che fosse perfetto e senza problemi
se però vogliamo elencare i problemi di OpenGL dovremmo elencare anche quelli che aveva DirectX, e sarebbero molti di più… almeno agli inizi
OpenGL resta uno standard disponibile per ogni piattaforma spinto dalle stesse aziende che producono le schede grafiche!
l’Arb fornisce, oggi, dei tool di sviluppo più complessi da usare dei tool di sviluppo che fornisce microsoft, e di questo te ne dò atto! La differenza fondamentale però è che se non ti sta bene quel tool di sviluppo puoi scrivertene un altro e usarlo mentre con DirectX se non ti va bene il tool di sviluppo che ti ha preparato microsoft ti attacchi!
Sono in accordo con te nel dire che è bello siano i produttori e il mercato a dover decidere se OpenGL 3.0 tornerà al successo o meno! Un po’ meno sugli utenti finali che sono in genere ragazzi che non capiscono nulla di queste cose e comunque non sono, per ora, interessati a cosa ci sta dietro.
A me piacerebbe che OpenGL tornasse “alla ribalta” perché è uno standard multipiattaforma… perché sono convinto che, con più attenzione di tutti (soprattutto sviluppatori) a tale standard, potrebbe migliorare moltissimo in breve tempo: colmando le mancanze in tool di sviluppo e in documentazione!
concludendo rispondo al tuo OT: io mi trovo benissimo su Linux perché ho una libertà totale! Perché penso che sia sbagliato dipendere da un azienda su certe cose… e anche se ho qualche problema che utenti Windows (o mac) non hanno (servizi web scritti in ActiveX o non standard *and so on*) ho anche moltissimi altri problemi che gli utenti Windows o mac avranno sempre, a cominciare dall’essere obbligati a cambiare tutto ogni qual volta la software house decide che io debba cambiare! Non so perché tu non ti trovi su Linux, avrai le tue buone ragioni… Se devi lavorare su DirectX per esempio è un ottima ragione : per Linux non c’è nessun tool di sviluppo e anche se ci fosse non potresti provare i risultati perché non c’è DirectX!
30 settembre, 2007 at 11:28
Rispondo a master.
Come hai detto tu e come ho gia’ scritto nel precedente commento, non credo che OpenGL soffra di un significativo gap prestazionale con Direct3D.
10 anni fa programmavo con Glide, poi sono passato ad OpenGL (mantenevo la versione OpenGL del motore 3d), adesso sono su Direct3D 9.
Questo per dire che non schifo a prescindere OpenGL, ma so quali sono i problemi che si possono incontrare lavorandoci. Il fatto che oggi esista una libreria apposita per gestire le estensioni e’ la dimostrazione che quel meccanismo era complesso ed inutile.
Sullo scissoring, potrei sbagliarmi… cmq se non ricordo male era la possibilita’ di evitare di aggiornare tutto lo schermo se erano cambiate solo alcune cose.. una specie di redraw ristretto. Alcune schede consumer ai tempi non lo supportavano. In piu’ il discorso che faccio non mi sembra in contraddizione. Se tu stai usando 3ds max o ai tempi una worstation SGI e stai lavorando su un viewport, lo scissoring ha senso.. perche’ ricalcolare tutta l’area visibile quando stai modificando solo una piccola parte? Su un fps nel quale tutto lo schermo si muove da frame a frame… e’ perfettamente inutile. Chiaro che 3dfx o matrox o s3 o chi per loro dovendo scegliere se mettere su una scheda consumer lo scissor test o il multitexturing preferivano il secondo. 🙂
Pero’ magari un gioco poteva avvantaggiarsene.. ma se lo usava e non era supportato dalla scheda xyz non hai un codice di errore in risposta… vai a 3fps e basta!!
E’ vero quello che dici, cioe’ che l’ARB fa il suo lavoro e regolarmente unifica le estensioni. Pero’ cosi’ facendo per fare la stessa cosa hai 3 estensioni diverse (le 2 proprietare e poi quella dell’ARB).. e come sviluppatore sei costretto ad attendere che l’ARB faccia chiarezza.
Ma se il tuo gioco deve uscire tra 3 mesi, devi usare le estensioni che hai a disposizione oggi. Una volta che quelle estensioni che hai usato nel tuo gioco vengono rese obsolete dalla nuova estensione ARB, cosa ne sara’ delle vecchie estensioni? Chi sviluppa i driver non si preoccupera’ piu’ di migliorarle, di fixare bug, di aumentarne le prestazioni.. perche’ sono state rese obsolete da una nuova estensione. E se un driver introducesse un bug in una vecchia estensione, quanto sarebbe facile accorgersene a distanza di 2 anni quando quella estensione e’ stata soppiantata da quella nuova? Come deve comportarsi un programmatore? Deve stare dietro all’ARB? Deve riscrivere il proprio codice per fare la stessa cosa ma usando la nuova estensione? Lo lascia li’? E chi gli garantisce che la sua applicazione funzionera’ ancora tra 3 anni? Sicuramente la situazione non e’ cosi’ drammatica, ma in certi campi e’ bene non dare nulla per scontato visto che gli errori li fanno tutti.
In ogni caso, anche quando SGI era in ottima forma.. faceva anche lei le sue estensioni. E’ proprio il concetto stesso che ha delle falle, cosi’ come il fatto che ogni scheda deve avere lo stesso output se i dati in ingresso sono gli stessi… che senso ha fare alcune operazioni via software? Siamo sicuri che sia meglio avere la garanzia che l’output sia identico al prezzo di rischiare di avere qualcosa che gira a 3fps?
La filosofia Direct3D e’ diversa. Microsoft decide quale e’ la strada da percorrere e decide quando e come rilasciare nuove versioni dell’API. I produttori di hardware hanno la liberta’ di decidere cosa supportare, cosa emulare (diverse schede intel per portatili ancora oggi eseguono i vertex shader software, per esempio), cosa non supportare. Il tutto e’ gestito da “comodi” caps che ti informano di cosa viene supportato e cosa non viene supportato.
Io voglio solo dire che OpenGL e’ caduta sotto il suo stesso peso. Microsoft ha spinto sulla sua API, l’ha usata come riferimento per le sue console, etc.
In piu’ c’e’ una cosa che tu hai scritto e che dovrebbe farti venire il dubbio che io abbia ragione quando critico la ridondanza di OpenGL .
3dfx si e’ fatta il suo driver, accedeva al suo hardware, ha rilasciato la sua API. Questo significa che tecnicamente e’ possibile su win98 accedere all’hardware. Siccome 3dfx da sola ha avuto la forza di svilupparsi un driver e una api da zero, perche’ non si e’ fatta un driver OpenGL? Perche’ un produttore di hardware riesce con facilita’ a sviluppare una api proprietaria che gira a meraviglia ma ha bisogno di MCD, ICD, etc????
E sopratutto.. perche’ la stessa SGI non e’ in grado di fare una cosa che funziona al punto da venire chiamato Instable Client Driver???? Perche’ Microsoft fornisce una versione RIDOTTA?
Perche’ OpenGL soffre di obesita’, soffre di un problema filosofico. Per avere un driver OpenGL devi implementare TUTTO quello e’ presente in OpenGL, anche se ti serve si e no il 20% di quello che c’e’ dentro. Perche’ diventa un lavoro immane, inutile, etc.
3dfx ha dimostrato che si poteva velocemente implementare una API veloce, stabile, funzionante (e che “parla” con l’hardware). SGI invece ha dimostrato che per un produttore era impossibile fare altrettanto con OpenGL a meno che un colosso non fornisse una base gia’ funzionante (cosa che microsoft non ha provato a fare (mettiamo in malafede) e che SGI non e’ RIUSCITA a fare!!!)
D’accordo al 100% che microsoft abbia malignamente colto la palla al balzo per crearsi un vantaggio, ma la palla e’ stata offerta dalla natura stessa di OpenGL e dall’atteggiamento fondamentalista di SGI che doveva fornire ai produttori di schede video una cosa semplice semplice: una versione MINI di OpenGL pensata per applicazioni consumer che servisse da base per lo sviluppo dei driver. Invece si e’ arroccata sulla filosofia originale di OpenGL e sulle necessita’ di un ambiente workstation (cosi’ come nello sviluppo di OS/2 con microsoft, IBM si arrocco’ su posizioni da venditore di server).
Tornando a DX, non ho problemi a dire (e mai ho detto il contrario) che inizialmente erano scadenti. Per quanto riguarda sviluppare su OpenGL e su Direct3D, sono due filosofie diverse e due stili diversi. Di Direct3D mi piace il fatto che sia molto piu’ vicino all’hardware anche se per fare alcune operazioni semplici a volte bisogna fare un po’ troppe chiamate.
Su DirectX 10 ribadisco che la scelta di tenere fuori gli utenti XP e’ da biasimare.
Faccio pero’ l’avvocato del diavolo. Microsoft vuole cercare di semplificare il processo di controllo delle feature delle schede (ho usato “comodo” riguardo ai CAPS perche’ e’ una cosa che a volte scoccia.. anzi spesso e’ ridondante e inutile). Partendo dal presupposto che se vai avanti sulla strada dei CAPS devi fornire la possibilita’ di identificare sia la scheda di ultimissima generazione che la vecchissima scheda S3… come fai a risolvere questo problema?
Se lasci tutto cosi’ rischi di fare “in piccolo” la fine che ha fatto OpenGL con le estensioni.. controllare le feature diventera’ una cosa talmente enorme ed inutile che dovrai usare una libreria esterna.
Invece hai l’alternativa li’ davanti ai tuoi occhi: semplifichi l’API, prendi il nuovo sistema operativo che ha come specifiche minime i Pixel Shader 2.0 per AERO.. e li metti assieme. Cosi’ spingi il tuo nuovo sistema, hai la garanzia di poter tagliare i ponti con il passato, rendi la vita piu’ facile ai programmatori.
Ripeto: la scelta fatta mi da fastidio, ma puo’ avere un suo senso nella logica del miglioramento dell’API, che e’ quello che conta.
Non sono un seguace o un fanboy di microsoft, mi chiedo poi chi e’ che passera’ a DX10 abbandonando DX9 quando il codice DX10 non puo’ girare su un Xbox360.
O sono completamente scemi (puo’ essere, eh!) oppure al momento sembra che la loro idea sia: DX9 non morira’ fino a quando Xbox360 sara’ la console di riferimento per microsoft. Visto che gli sviluppatori continueranno comunque a garantire il supporto DX9, tagliamo i ponti con il passato, congeliamo DX9 e mettiamoci avanti su DX10 con Vista cercando di migliorare l’API e gettare le basi per quello che sara’ l’SDK della futura console e della nuova generazione di PC venduti con windows Vista.
Puoi non essere d’accordo, puoi essere infastidito come lo sono io.. ma e’ una scelta che in prospettiva ha una ragione di esistere. Do’ atto a Microsoft di aver fatto una scelta logica, certo non era la sola scelta disponibile. Staremo a vedere se andranno avanti cosi’ o se come dici tu saranno costretti a mettere DX10 su XP. Il bello e’ che questo pero’ lo decidera’ il mercato, lo decideranno gli sviluppatori e lo decideranno i videogiocatori. Se OpenGL 3.0 sara’ l’unico modo per avere i geometry shader in windows XP, puo’ darsi che OpenGL riprenda campo.
Il bello di tutto questo e’ che chi decide il futuro non e’ microsoft, che da un indirizzo e fa le sue scelte commerciali e poi valuta i risultati.
Chi decide sono le decine di migliaia di persone come me, come te, come quelli che leggono il tuo blog che avranno la liberta’ di scegliere che api usare e che feature supportare nei loro prodotti. E giocoforza microsoft dovra’ adeguarsi alla volonta’ degli utenti, degli sviluppatori e dei produttori di schede video.
ps a me onestamente non piace lavorare su linux, pero’ penso di rendermi conto di cosa significhi monopolio. Monopolio significa che qualcuno puo’ decidere per me, che io non ho alternative. Quando acquisto un PC mi compro i pezzi che desidero e me li monto da solo. Se voglio partizionare e mettere due sistemi lo faccio. Se voglio usare firefox o openoffice o winamp invece di explorer, office e media player lo faccio. Di sicuro pero’ se il signor steve jobs domani decide che tu non puoi installare un certo software ha il potere di farlo. Mi rendo conto che sono OT ma dovremmo ritenerci fortunati se oggi possiamo ancora parlare di cose come “microsoft forse sara’ costretta a mettere DX10 su XP”, perche’ se uno tra APLLE, IBM, SUN e SGI avesse vinto la sua battaglia a quest’ora saremmo schiavi di un singolo produttore che puo’ decidere il futuro di tutti e i PC sarebbero venduti come fossero delle console. Quindi.. boh.. abbasso il Mac e quelli disposti a svendere la propria liberta’ di scelta’ per un design da fighetti. 🙂
30 settembre, 2007 at 10:18
Se ho usato toni un po’ forti mi scuso… cerchiamo di proseguire su una linea piu’ tranquilla, io per primo!
Rispondo intanto ad antonio ricci.
4- Le glide sono morte per varie ragioni, la prima e’ che essendo proprietarie quando 3dfx e’ stata surclassata da nvidia gli sviluppatori hanno (giustamente) rivolto la loro attenzione altrove (in quel periodo tirava piu’ OpenGL di Direct3D, appunto),. un’altra ragione e’ che 3dfx aggiungeva a Glide il supporto per quelle che riteneva essere feature importanti. Poi se il loro algoritmo di compressione era inferiore a dxtc (che e’ derivato da quello s3), se per anni sono rimasti al rendering 16-bit quando altri avevano il supporto dei 32-bit, se il bump mapping non era presente, etc.. beh.. 3dfx avrebbe dovuto fare scelte piu’ modaiole come fece nvidia. Il punto importante pero’ e’ che le Glide hanno dimostrato che:
a- trovandosi di fronte alla possibilita’ di usare opengl ed estenderlo o farsi una api nuova, 3dfx ha preferito farsi una sua api (che ha avuto successo)… questo significa che OpenGL gia’ allora soffriva di alcuni problemi legati alle sue origini “workstation”.
b- il fatto che una api di un singolo produttore diventi un punto di riferimento per l’intera industria significa che lo spazio per muoversi c’era eccome.
5- quando i maggiori motori 3d (ID e Epic) supportano OpenGL (i motori id SOLO OpenGL, tra l’altro), quando da anni programmi come 3ds max supportano opengl, quando i maggiori produttori di schede video registrano estensioni OpenGL.. per me OpenGL e Direct3D sono alla pari. Riguardo ai colli di bottiglia non ho mai riscontrato particolari problemi, non credo che qualcuno possa affermare che i motori ID fossero limitati da driver o altro. Semmai ci sono alcuni produttori che hanno driver non all’altezza (e’ notizia recente che ATI abbia rilasciato nuovi driver che incrementano le prestazioni delle nuove schede del 50%.. ATI ha sempre avuto di questi problemi.. li ha nel 2007, li aveva nel 1997 ma non si puo’ incolpare microsoft per problemi dei driver ATI), ma a livello prestazionale OpenGL e Direct3D erano assolutamente concorrenziali.
Riguardo alle tue considerazioni personali sono “pienamente d’accordo a meta’” con te. 🙂
Non concordo sull’evoluzione di DirectX/Direct3D. Microsoft e’ stata la prima ad implementare il supporto per un linguaggio di shading ad alto livello (HLSL), la prima ad dare la possibilita’ agli sviluppatori di scrivere shader in assembly e assemblarli senza patemi d’animo su GPU diverse. Chi aveva OpenGL ha dovuto prima stare dietro alle estensioni proprietarie nVidia e ATI, poi chi voleva poteva usare CG (C for Graphics, proprietario nVidia).. infine finalmente e’ arrivato GLSL.
A (parziale) riprova di quello che dico quando affermo che OpenGL e’ “minato alla base” dalla sua storia che affonda le proprie radici nell’ambito workstation, il kit di sviluppo per Playstation3 non usa OpenGL in senso stretto, bensi’ una versione ridotta di OpenGL/una versione estesa di OpenGL ES (dipende dai punti di vista).
Tra l’altro lo sviluppo di shader su PS3 non viene fatto con GLSL (che e’ standard per OpenGL), ma con CG!!
In definitiva penso che microsoft abbia giustamente spinto DirectX e lo abbia fatto cercando di evitare i problemi che affliggevano e affliggono OpenGL, con risultati inizialmente scadenti e poi migliorando sempre piu’. Se si considera che Xbox utilizzava DirectX 8.1 e Xbox360 DirectX9.. va da se che su PC Direct3D sia l’API di riferimento per lo sviluppo di videogiochi: a nessuno piace scrivere il doppio di codice per supportare due piattaforme. Certo se PS3 avesse usato OpenGL 2.0 invece di una specie di custom OpenGL ES sarebbe stato diverso. La domanda corretta dovrebbe essere: perche’ sony invece di utilizzare opengl ha preferito estendere opengl es che e’ stato pensato per dispositivi mobile?? Probabilmente perche’ OpenGL cosi’ come e’.. nel 2007 non e’ la scelta piu’ sensata per programmare un videogioco. Che interesse avrebbe avuto Sony a non usare OpenGL ma svilupparsi (come ha fatto 3dfx piu’ di 10 anni prima) una sua versione?
Per spiegarti il problema che storicamente affligge OpenGL prendo proprio GLSL e faccio due esempi:
1- se tu fai una operazione non permessa dal tuo hardware all’interno di uno shader GLSL automaticamente lo shader viene emulato software, secondo filosofia OpenGL. Questo e’ inaccettabile in un ambiente realtime nel quale lo scopo non e’ visualizzare gli stessi identici risultati su hardware differenti. Gia’ questo e’ significativo.
2- Mentre in D3DX, la libreria di supporto D3D di DirectX (una specie di GLUT), i files HLSL sono compilati dal compilatore microsoft, mentre in Cg i files cg sono compilati dal compilatore nvidia… la filosofia OpenGL e’ che ogni vendor si deve scrivere il suo compilatore. Diversi driver = diversi compilatori = diversi bug = e’ un inferno garantire che le cose funzionino. Ci sono infatti anche motori mutlipiattaforma (mac, linux, win32) che supportano OpenGL ma poi usano Cg invece di GLSL. Microsoft e’ da DirectX 8 che ha il suo linguaggio di shading ad alto livello (HLSL) che… banalmente… funziona!
Capitolo DirectX 10 solo su Vista: assolutamente d’accordo nel biasimare una scelta che affonda le proprie radici nel marketing e nella necessita’ di fornire almeno una ragione “valida” per passare a vista… se permetti pero’ finisco questo discorso nel prossimo commento. 🙂
29 settembre, 2007 at 20:19
@MAH
l’articolo non è falso
riporta dei fatti
se qualcosa è omesso (vedi discorso Glide) non è per malafede ma per “non conoscenza” o mancanza di fonti che lo confermino
inoltre, con tutto il rispetto, io ho raccontato la storia di OpenGL e DirectX che comincia dopo la morte di Glide… o “durante” se vogliamo
Come ti ha già risposto Antonio Ricci (che ha scritto un commento molto meno in malafede del tuo) io non ho mai scritto che Quake fosse stato scritto in OpenGL: ho scritto chiaramente che è stato fatto il porting ad OpenGL in un solo week end
riguardo il discorso “scissor” di cui parli
non conosco molto dell’argomento ma so come viene portato avanti OpenGL: dai produttori di schede video
quindi che sia qualcosa di non conveniente ai produttori di schede video mi sembra altamente improbabile…
che poi sia d’ostacolo ai programmatori mi sembra altrettanto assurdo in quanto se non serve una funzionalità basta non usarla
poi tu dici in sostanza che microsoft aveva ragione ad affermare che OpenGL non era adatto ai videgiochi: anche questo è falso
e giochi come Quake o Unreal ne erano la prova!
Se poi ci aggiungiamo che a quel tempo DirectX faceva schifo sia dal punto di vista delle prestazioni che dal punto di vista dei programmatori (ed erano loro a lamentarsi) ne consegue che la migliore (unica?) api per le applicazioni 3D era OpenGL
se non ha vinto è perché è stata deliberatamente ostacolata, come ho qui spiegato.
poi tiri fuori che l’api openGL è morta quando ha deciso di lasciare ad ati ed nvidia la possibilità di creare le proprie estensioni proprietarie..
questo è successo quando SGI è fallita (per colpa di microsoft)
e come ho scritto: “OpenGL aveva perso il suo più grande supporter”
ad ogni modo la specifica OpenGL è andata avanti da allora proprio con estensioni proprietarie (pressoché identiche da una parte e dall’altra)
che poi venivano standardizzate dall’ARB e incluse nella successiva versione OpenGL
tutt’ora i maggiori sostenitori di OpenGL sono ATI e nVidia perché usano OpenGL per innovare… si scrivono le proprie estensioni cosa che non possono fare con DirectX
OpenGL non è morta.. e non morirà mai da questo punto di vista!
io tutto il contenuto di questo articolo l’ho letto da un Libro e poi ho cercato conferme sul web…
se vuoi sostenere che sia falso porta delle prove.. non un accozzaglia di inesattezze e stravolgimenti della realtÃ
@Antonio
il tuo è un bel commento invece..
però voglio precisare alcune cose:
1) le migliorie di DirectX 10 sono poche ma IMPORTANTISSIME: gli shader sono il futuro e gli shader introdotti con le nuove generazioni di schede grafiche (e supportati da DX10) permettono di fare cose che prima non era possibile fare!
Il punto è un altro: gira solo su Vista
e senza motivi tecnici.. è una scelta commerciale
e questo è profondamente sbagliato…
riguardo al “DirectX è meglio di OpenGL” non la farei così facile:
DirectX ha un sacco di ottima documentazione (adesso.. non agli inizi), probabilmente di più e migliore di OpenGL
sulle performance non sarei così convinto… purtroppo qui è complesso fare un confronto perché le applicazioni scritte per le due api e che possono girare senza “intralci e rallentamenti artificiosi” sullo stesso sistema sono davvero poche…
riguardo la facilità di scrittura.. anche qui non sono d’accordo! È questione di cosa uno sa usare!
a tutto questo vorrei aggiungere che le OpenGL sono multi piattaforma! E non è poco!
Le DX10 supportano diverse cose in più delle OpenGL al momento… le OpenGL 3.0 colmeranno questo gap… dovrebbero uscire tra non molto e allora staremo a vedere cosa decideranno di fare i produttori di giochi
Se scegliere DX10 e tagliar fuori tutti gli utenti XP o passare a OpenGL e tagliare fuori gli utenti Vista
nulla è prevedibile… anzi penso che prima che microsoft permetta qualcosa del genere rilascerà le DX10 anche per XP, decretando probabilmente la morte di Vista
Il discorso sul presente è complesso…
Nel mio articolo, comunque, io spiego come si è arrivati ad oggi! Di fatto DirectX hanno vinto grazie ai movimenti più o meno sporchi di microsoft…
se non si fosse comportata a quel modo oggi avremmo per lo meno il 50% dei giochi scritti per OpenGL e multipiattaforma!
29 settembre, 2007 at 14:23
Più o meno concordo con quanto scritto Mah, anche se giudicare l’articolo “falso” mi sembra eccessivo.
1) Infatti Mastro non dice che Quake è stato sviluppato in OpenGL, ma che ne è stato effettuato un porting in OpenGL in 2 giorni.
2-3) Concordo, fino alle DirectX 8 (incluse) quasi tutti i giochi avevano il doppio (o triplo) supporto
4) Concordo, Mastro ha già ammesso che non conosce la storia delle Glide, librerie molto potenti ma che avevano senso solo quando le uniche schede grafiche erano le Voodoo. Mi sembra commercialmente ovvio che la concorrenza – quando arrivò – non appoggiasse tali librerie. Sono “morte” insieme alla casa madre che le inventò, rilevata in toto dalla concorrenza che non aveva interesse a proseguire la linea (tra l’altro con le Voodoo 5 si ebbe l’intuizione dell’abbinamento di più schede, cosa che poi ispirò lo SLI di Nvidia…ma sto andando OT)
5) Se mah parla di “Api concorrenti” e basta, concordo. Ma se parliamo di “API concorrenti che abbiano adeguato supporto in ambiente Windows, che siano fornite di drivers che non facciano collo di bottiglia, e con cui sia commercialmente sensato sviluppare giochi”, no. Microsoft ha palesemente ostacolato l’uso delle OpenGL su Windows, ed è ciò che denuncia l’articolo. Se ciò sia positivo o negativo, è un parere personale.
6) Semi-concordo, tenendo presente i tempi: fino a circa il ’97-98, OpenGL non ha decollato per colpa anche di Microsoft, e Carmack ha fatto soldi così come tanti altri con l’OpenGL. Da lì in poi è come dici tu, tenendo però presente che il discorso è un po’ esagerato, in fondo il supporto lo davano solo per pochi produttori e c’erano sostanzialmente soltanto 3 famiglie di parti proprietarie. Sto parlando sempre di videogiochi e di schede grafiche mercato consumer, eh, che se mettiamo in mezzo il mercato Linux, le workstation grafiche Unix-based, e le schede grafiche mercato Business e Professional, il discorso si allunga tantissimo e le mie competenze vacillano alquanto.
E ora le mie considerazioni personali: il mio biasimo a Microsoft per avere ostacolato soluzioni diverse dalle sue; ha agito con il solito atteggiamento arrogante e strafottente che la contraddistingue. Ma tutto ciò ha portato TUTTI a sviluppare con le DirectX 9, che sono effettivamente molto facili da usare,efficaci e performanti, ed è indubbiamente più facile per un grafico sapere un solo linguaggio; ci sono anche altri vantaggi commerciali, come minori sbattimenti in fase di test, e la facilità di reperire programmatori che le sappiano usare. MA MICROSOFT CON LE DIRECTX 10 STA ESAGERANDO. Le migliorie introdotte sono trascurabili, e il fatto che girino solo su un OS che penalizza le librerie grafiche concorrenti mi fa ribrezzo. Avranno problemi anche i software developer, i produttori di periferiche, e sopratutto gli utenti finali, che dovranno impazzire dietro a un Vista fatto con i piedi.
Cordialmente
29 settembre, 2007 at 11:29
Questo “articolo” e’ falso come una moneta da 3 euro!
1- Quake non fu rilasciato per OpenGL, ma aveva ancora RENDERING SOFTWARE e girava IN DOS (andate a guardarvi il sorgente del gioco e date un’occhiata a come Carmack fa una specie di texture mapping prospettico software facendo lavorare in parallelo FPU e CPU).
2- Dal porting per Win32 di Quake in poi SONO USCITE DECINE E DECINE DI GIOCHI OPENGL PER WIN32… banalmente tutti i giochi che usano i motori ID.
3- Unreal Torunament (il primo) e Unreal (il primo) avevano anche supporto OpenGL. Va da se che tutti i giochi che hanno utilizzato il suddetto motore di Epic supportavano ANCHE OPENGL SU WIN32.
4- Ci si dimentica che prima di DirectX, prima di nVidia, prima di ATI.. le schede 3d nel mercato consumer furono portate da 3dfx che si fece la sua API grafica proprietaria (GLIDE), con sintassi simile a quella OpenGL e finche’ 3dfx non venne spazzata via da nvidia ogni gioco aveva il supporto per GLIDE.
5- Il punto 4 dimostra due cose. La prima e’ che OpenGL non era adatto alla grafica realtime (ne riparlo nel punto 6), la seconda e’ che chiunque avesse voluto avrebbe potuto sviluppare API concorrenti, Microsoft o non Microsoft.
6- OpenGL aveva/ha due problemi. Il primo e’ che esistevano una serie di operazioni (scissoring per esempio) che non avevano alcun motivo di esistere nell’ambito dei videogiochi. Sia per problemi di implementazione hardware (costo) sia perche’ non avevano alcuno scopo. Ma siccome un driver per essere compatibile con OpenGL deve implementare tutte le funzioni, il programmatore si trovava con una serie di funzioni inutili, altre che non erano eseguite in hardware ma emulate software, etc. Il secondo e’ che..
7- .. fino alla meta’ degli anni 90 OpenGL non aveva nemmeno il multitexture!!! Le schede consumer che uscivano sotto alcuni aspetti erano avanti ad OpenGL, per cui la soluzione decisa dall’ARB fu quella di permettere a SINGOLI PRODUTTORI DI HARDWARE di sviluppare le proprie estensioni PROPRIETARIE. Questo ha decretato la morte di OpenGL, non oscure manovre di Microsoft visto che di persone che hanno sviluppato e fatto valanghe di soldi con applicazioni OpenGL su WIN32 ce ne sono (lo stesso carmack). Quando ti trovi con un extension registry di 250+ estensioni e devi fare un test anche per vedere se il multitexturing e’ supportato… vuol dire che il tuo meccanismo di API “Aperta” se ne e’ andato a quel paese visto che e’ zeppa di estensioni PROPRIETARIE.
Microsoft da parte sua ha fatto un ragionamento inverso. Microsoft decide dove va a finire l’API e i produttori di hardware si devono adattare. Questo OGGI significa che lo stesso john carmack ha affermato a gennaio 2006 che Direct3D9 e’ l’API grafica MIGLIORE CHE ABBIA MAI USATO.
Proprio riguardo alle versioni di DirectX, Microsoft stabilisce dei parametri. Una scheda compatibile Direct3D9 deve supportare un tot di feature che microsoft ha deciso.
28 agosto, 2007 at 1:12
@fatmatt
ciao e grazie
vengo subito al dunque:
tu affermi che l’ “ambiente desktop di Vista: è basato sul codice open source di Compiz”
non mi risulta questo.. hai qualcosa a supporto di quanto dici?
sinceramente dubito sia così, almeno ufficialmente, e se non lo è ufficialmente non si potrà mai sapere…
se prendessero Compiz e lo modificassero dovrebbero rilasciare il software in GPL… visto che Aero NON è GPL
1) quel che dici non è vero
2) se anche fosse vero non potremmo saperlo e quindi stai tirando a indovinare
27 agosto, 2007 at 23:32
Complimenti per l’articolo!
Trovo che sia incredibile la storia di Microsoft….. da sempre produce software svantaggiato rispetto le controparti libere o comunque meno restrittive (non voglio alzare il polverone Linux vs Windows perchè non èquesto il centro della discussione) ma con espedienti e cavilli legali riesce sempre a spuntarla. Basta guardare al recente ambiente desktop di Vista: è basato sul codice open source di Compiz ma è di gran lunga più pesante per la macchina che lo esegue!. Oppure l’azione mediatica di Microsoft contro progetti come Mono e Wine, capaci di riprodurre alcuni software scritti per windows (in alcuni casi questi software offrono prestazioni migliori della sua piattaforma nativa!!).Pare che i tempi stiano cambiando a giudicare dall’avanzata dei Desktop Linux e se così fosse, le OpenGL potrebbero riacquistare il prestigio che gli spetta. Aspettiamo e speriamo.
P.S Non vedo l’ora di mettere le mani sulle OpenGL 3!!!!!!
20 agosto, 2007 at 20:45
@Zan-shi
ciao e grazie del contributo, purtroppo non so molto di “quella” storia, se vuoi aggiungere dell’altro è il ben venuto
20 agosto, 2007 at 14:20
Ho trovato piacevole il riassunto della disputa tra DirectX e OpenGL; però ho notato che manca un tassello nella storia: le Glide3D.
E’ vero che queste librerie non vengono più usate dai tempi delle Vodoo 2, ma è altrettanto vero che sono state queste librerie a far approdare la grafica acellerata sui pc dei gamer di tutto il mondo. Poi, con l’arrivo delle gpu nVidia le cose sono un po’ cambiate; però mi sembra scorretto non citarle nella storia.
1 agosto, 2007 at 19:40
@Alberto
per Windows XP il supporto OpenGL dipende dai driver delle singole schede video, mentre in windows vista microsoft so che voleva provare (di nuovo) a congelare la versione OpenGL alla 1.4 (vecchia). C’erano state molte lamentele, poi non so come sia andata.. perché non ho mai usato Vista e mai lo userò (se possibile)
1 agosto, 2007 at 14:52
Se non sbaglio i produttori HW potranno fare le loro implementazioni aggiornate, ma di default MS attiverà la versione vecchia.
26 luglio, 2007 at 19:04
Da quel che mi risulta [le mie notizie sono di circa un anno fa ] sembra che vista sarà compatibile [ dicono per questioni tecniche, ma in realtà si tratta di un più semplice boiocottaggio ] solamente con la versione 1.4 vanilla di opengl… questo implica che le applicazioni che usano opengl 2, nettamente migliori ed aggiornate come librerie, non potranno funzionare. Spero abbiamo fatto qualche passo indietro, anche perchè era attiva una petizione online mi sembra, che non ho più avuto tempo di seguire…
23 giugno, 2007 at 16:37
@Alex
non so come mai il tuo commento era finito nell spam
ti posso consigliare 2 siti internet per verificare l’eventuale compatibilità con Linux
Database applicazioni Wine
e
Cedega Games Database
il primo è un “emulatore” libero (e gratuito) per applicazioni windows (non è un emulatore in realtà .. ma se lo chiamo così ci capiamo), nel sito che ti ho dato puoi cercare le applicazioni per windows che ti interessa far girare su Linux, se le trovi all’interno c’è scritto cosa funziona e cosa no.. (giochi compresi a volte)
il secondo è un derivato di wine, orientato ai giochi.. è a pagamento (anche se non ha un costo eccessivo).. è fenomenale.. io l’ho provato un po’ di tempo fa.. peccato che la mia scheda video è una ATI, che non è molto ben supportata nei driver Linux, e quindi con alcuni giochi avevo dei problemi (era scritto anche sul sito di cedega)
inutile dirti che devi probabilmente installare i driver proprietari della tua scheda video, se hai un nvidia con cedega i giochi dovrebbero girarti quasi tutti 🙂
valuta tu ora..
la situazione è questa purtroppo, io ho una partizione da 20 gb per xp sul mio disco, che avvio solo ed esclusivamente quando devo giocare a qualche gioco che non c’è per Linux, o non mi gira su Linux..
e pensare che questo mi tocca per la storia qui sopra mi irrita parecchio
21 giugno, 2007 at 9:51
Molto interessante, peccato che personalmente mi appassionano i game del tipo Age Of Empires, Age Of Mithology, Empire Earth II etc…
So per certo che Age Of Mithology esiste in versione Apple, che se non erro è un linux-based.
chissà se su linux esiste qualcosa di simile, o cmq si riesce a usare DirectX…. Da quando ho un pc con vista sto seriamente pensando di formattar tutto e passare al pinguino!
3 Maggio, 2007 at 23:26
Mondo governato dalle scelte di mercato, e la poesia ? bah…
Grazie dell’articolo istruttivo tra l’altro 😉
20 aprile, 2007 at 15:43
Molto interessante!
13 aprile, 2007 at 17:37
Ottimo articolo.
Non conoscevo molto questa storia e soprattutto non avevo idea della potenza e semplicità di OpenGL.
Grazie mille.
Ciaoz
16 marzo, 2007 at 11:30
Felicissimo della cosa! 🙂
allora ti segnalo anche questo link
come costruirsi 4 dvd con tutto il repositori ubuntu
se fai seguire ad un amico con adsl quei passi e ti fai dare i 4 dvd potrai utilizzare tutto il software del repository anche se non sei collegata ad internet (e se hai un 56k è molto utile)
ps: l’amico deve avere linux per poterli seguire..
pps: se non hai amici con linux cerca un LUG nelle vicinanze di casa tua e chiedi a uno degli utenti linux se possono farlo per te.. sicuramente qualcuno disposto lo trovi 😉 puoi cercare un lug vicino a te qui
ppps: si può fare anche senza linux, ma non seguendo esattamente quella procedura.. insomma.. è un po’ un casino 😀
16 marzo, 2007 at 9:49
Ciao. Intanto ti ringrazio nuovamente e devo darti ragione su una cosa. Non appena ho comunicato ad alcuni amici di mail che ero interessata a linux, è scoppiata la corsa a chi doveva aiutarmi per primo. E così, nell’attesa che mi arrivi il CD di ubuntu, mi hanno fornito un avviabile da CD scaricabile anche senza ADSL. Sembrerà strano, ma nella mia zona non abbiamo ancora questo servizio, quindi è impresa titanica scaricare un file troppo grande.
Ebbene. Ho masterizzato seguendo le istruzioni (fra le tante, vi sono moltissimi siti). Ho avviato e…ho trovato un sistema operativo non pari, superiore a windows. Tante applicazioni a me sconosciute e che non vedo l’ora di sperimentare. Praticamente gratuite e con tanto d’istruzioni. Ovvio che per le cose complicate occorrerà del tempo, ma ho notato che vi sono anche alcune riviste ed i forum sono pieni di notizie e procedure utili.
Insomma. C’è una nuova adepta felice e contenta. Che ora andrà a cercare le versioni linux di alcuni driver utili.
Un esponenziale grazie.