View Full Version : [opengl] Tecnologia o ideologia.
E' appena uscito Rage della id software e senza entrare nel merito del gameplay o della famosa/famigerata tecnologia megatexture che lo anima c'è una questione abbastanza curiosa.
Ho comprato il gioco su pc e dopo crash, schermate blu e tre diversi aggiornamenti di driver amd faccio finalmente partire il gioco ed è una tragedia su una macchina con 4gb di ram, processore dual core e una ati di fascia media.
Ho anche la versione 360 che mi ha prestato un amico e non c'è proprio paragone. Il gioco su 360 va a 60fps e la grafica è tra le migliori che ho visto su console.
A quanto pare buona parte dei problemi su pc son dovuti allo stato pietoso dei driver opengl della ati.
Su questo forum non si fa altro che sentire utenti che si lamentano del fatto che nessuno usa opengl, che nessuno ha a cuore gli standard aperti e la portabilità. Maledetto flash, maledette directx, maledetto windows.
Qui abbiamo un lampante caso di decisioni disastrose prese solo su base ideologica e non seguendo la ragioni tecniche. Id sapeva benissimo lo stato pietoso in cui versano i driver opengl ati e pur avendo un bel renderer dx9 su xbox 360 ha preferito usare opengl su pc andando incontro alla tragedia.
All'università alcuni dei miei docenti hanno fatto passare un messaggio sbagliato, sfornando legioni di informatici che prenderanno decisioni folli basandosi su ragioni ideologiche.
A lavoro ugualmente molti disastri son stati causati da persone che volevano utilizzare tecnologie inadatte allo scopo solo perchè le tecnologie che funzionavano erano prodotte da società "malvagie"
Che ne pensate?
@mattste
08-10-2011, 18:27
penso che la id sforna giochi opengl da una vita sempre con ottime prestazioni e qualità grafica al top della generazione , semplicemente in questo giro non c''e stato lavoro lato driver ( ed è colpa di id che nn si è preoccupata di fare un beta test su più macchine per permettere un fix prelaunch ) . Sono sicuro che tempo 1-2 mesi e con i nuovi driver girerà perfettamente .Le directx essendo usate in tutti i giochi ovviamente danno molte meno grane rispetto ad opengl lato driver
Uso OpenGL su windows e me lo posso permettere solo perchè faccio "giochini", lo stato dei driver è pietoso.
In alcune situazioni il PC scatta più di un iPod 4g. :mc:
Io credo che MS dovrebbe prendere in mano il controllo e offrire una OpenGL by Microsoft che si appoggia sulla stessa interfaccia HAL che usa DX in modo da rendere le due sostanzialmente due interfacce intercambiabili allo strato driver.
Potrebbe farlo tranquillamente ed è quello che fa ad esempio Apple: nei suoi OS OpenGL è una libreria di sistema che si aspetta driver che facciano determinate cose, non è parte dei driver.
Probabilmente se avessero fatto quello che era tanto temuto in Longhorn, cioè se avessero reso OpenGL un wrapper di DirectX, la situazione sarebbe molto migliore di ora :asd:
Ironicamente nel tanto libero e avanzato linux la situazione è la stessa pietosa di Win, con OpenGL fornita a discrezione dal driver - e se esistessero giochi soffrirebbero degli stessi problemi, se non peggiori.
Io personalmente scelgo sempre "tecnologia", perchè non sono interessato alle tech in sè, quelle sono strumenti.
Scegliere una tech per ideologia è come usarla perchè il tuo scopo è usarla, che è quasi perverso :D
cdimauro
09-10-2011, 21:43
Carmack ha usato sempre le OpenGL, per cui nulla di nuovo.
Non so se la Id è rimasta l'unica a continuare a rilasciare roba tagliata male con queste librerie, ma di certo ormai si contano sulle dita di una mano monca.
Su PC da anni le DirectX dominano incontrastate.
Che ne pensate?
Penso che i responsabili QA di bethesda andrebbero presi a calci in culo, perche' al di la' delle difficolta' tecniche della piattaforma PC, un problema del genere posso capirlo da un produttore indie, non da una azienda che spende milionate di euro per produrre un gioco...
Kralizek
10-10-2011, 08:42
Io credo che MS dovrebbe prendere in mano il controllo e offrire una OpenGL by Microsoft che si appoggia sulla stessa interfaccia HAL che usa DX in modo da rendere le due sostanzialmente due interfacce intercambiabili allo strato driver.
i agree, ma tu sai cosa si sarebbe abbattuto su Seattle vero?
i agree, ma tu sai cosa si sarebbe abbattuto su Seattle vero?
Lo so che è sognare :D
pabloski
10-10-2011, 15:01
i agree, ma tu sai cosa si sarebbe abbattuto su Seattle vero?
perchè la pensi così? alla fine l'idea non è male e cioè ms offre un layer di emulazione opengl per directx
il problema è che non lo faranno mai proprio perchè vogliono uccidere opengl
del resto directx è nata proprio per creare un ulteriore lock all'interoperabilità
il problema è che ati, a parte driver per windows con supporto directx, non sa fare nient'altro
l'opengl di ati su windows fa schifo, su linux fanno schifo proprio i driver, per altri OS ati è desaparecida
AnonimoVeneziano
10-10-2011, 15:41
Non è certamente colpa di opengl in se. Il problema sono i drivers che non sono curati a dovere come lo sono quelli per le DX. Ci sono problemi anche all'uscita di giochi DX, figuriamoci di giochi OpenGL.
La causa non sono i pochi giochi che escono che usano OpenGL (anzi, ce ne sono un bel po' che utilizzano opengl usciti di recente) , ma l'elevatezza tecnica di questi giochi. I giochi OpenGL sono per lo più giochi indie che non mettono alle strette le implementazioni di AMD o Nvidia e quindi senza bug reports la qualità non viene migliorata. Poi esce una bomba come RAGE, che usa tecniche di rendering che nessuno ha mai usato prima neanche su DX (come l'uso di texture streaming con texture giganti al posto del usato ovunque texture tiling) ed escono fuori tutte le gabole delle varie implementazioni ... ovviamente devono essere corrette e il gioco inizierà ad andare come si deve e si spera che questo aiuterà a migliorare l'implementazione anche per altri giochi. Ho sentito dire addirittura che alcune funzioni OpenGL dell'implementazione AMD , specificate in estensioni dichiarate come supportate dal driver, erano completamente non funzionanti, ossia c'era uno stub di funzione , ma che non faceva lavoro ... (una cosa scandalosa).
Da un punto di vista di pura funzionalità OpenGL 4.2 non ha niente da invidiare alle DX11. Anzi.
Come al solito è un peccato che gli sviluppatori debbano farsi doppio lavoro se vogliono supportare più piattaforme senza incappare nei drivers opengl per windows, ma il fatto comunque che oggi lo sviluppo principale dei giochi sta sulle console dove le librerie proprietarie sono all'ordine del giorno fs si che alla fine tutti i motori siano creati in maniera tale che sia facile renderli compatibili con questa o l'altra libreria proprietaria riscrivendo solo piccole parti dello stesso ... quindi ... (la necessità aguzza l'ingegno dicono)
AnonimoVeneziano
10-10-2011, 15:43
perchè la pensi così? alla fine l'idea non è male e cioè ms offre un layer di emulazione opengl per directx
il problema è che non lo faranno mai proprio perchè vogliono uccidere opengl
del resto directx è nata proprio per creare un ulteriore lock all'interoperabilità
il problema è che ati, a parte driver per windows con supporto directx, non sa fare nient'altro
l'opengl di ati su windows fa schifo, su linux fanno schifo proprio i driver, per altri OS ati è desaparecida
Incredibilmente i drivers OSX di ATI sono molto meglio dei drivers Nvidia ...
Inoltre apprezzo molto su Linux il fatto che con ATI posso utilizzare la console ad alta risoluzione col driver opensource , avere il minimo di 3D sufficiente per il compositing del desktop e ci gira anche Starcraft 2 con Wine, tutto questo per me vale molto più di tutto quello che negli anni mi ha dato il blob nvidia o ati che sia.
Certo , tra i due blob meglio quello nvidia, se non altro per il supporto (perchè di magagne ne ha anche lui).
Ho sentito dire addirittura che alcune funzioni OpenGL dell'implementazione AMD , specificate in estensioni dichiarate come supportate dal driver, erano completamente non funzionanti, ossia c'era uno stub di funzione , ma che non faceva lavoro ... (una cosa scandalosa).
E' assolutamente vero, mi capitò quando lavoravo con Ogre, ed è una cosa tristemente comune :D
La cosa ironica in quel caso, è che avevo scritto uno shader Dx9.b e uno Dx9.c... ma la scheda video invece di dichiararsi b ed eseguire lo shader "semplice", "mentiva" dicendo di essere c, dunque fallendo miseramente.
Accade anche con DirectX prima della 10 (http://joostdevblog.blogspot.com/2011/09/proun-patch-v106-released.html), come si vede in questo blog qua, e il colpevole è sempre ATI.
Per fortuna MS ha iniziato un modello "strict" con DX10, peccato che DX10 sia completamente inutilizzata tra smartphone OpenGL e console DX9.
cdimauro
10-10-2011, 17:34
perchè la pensi così? alla fine l'idea non è male e cioè ms offre un layer di emulazione opengl per directx
Non vedo perché dovrebbe farlo: ha già le DirectX che vanno ben oltre le OpenGL.
il problema è che non lo faranno mai proprio perchè vogliono uccidere opengl
Questo è falsissimo. Prima di Vista Microsoft NON offriva NESSUNA libreria OpenGL: erano i produttori delle scheda video a installare il miniport OpenGL, altrimenti non c'era una mazza.
A partire da Vista Microsoft offre una wrapper OpenGL 1.4 (se non erro) sulle DirectX 10+. Quindi anche se non viene installato nessun miniport OpenGL, come minimo le OpenGL sono sempre a disposizione, seppur limitate a quella versione. Poi, al solito, se i produttori installano il miniport, avrei a disposizione le OpenGL aggiornate (e senza passare dalle DirectX).
del resto directx è nata proprio per creare un ulteriore lock all'interoperabilità
Progetti come WINE ti smentiscono.
Le DirectX sono nate per offrire strumenti più comodi agli sviluppatori. Ed è proprio per questo motivo che alla fine sono diventate le più usate: perché gli sviluppatori hanno SCELTO LIBERAMENTE gli strumenti che per loro erano più produttivi.
Al solito, tu vivi in un mondo parallelo e confondi la realtà coi tuoi desideri di fanboy open*.
AnonimoVeneziano
10-10-2011, 17:57
Non vedo perché dovrebbe farlo: ha già le DirectX che vanno ben oltre le OpenGL.
Esempi che non siano collegati ai problemi tecnici delle implementazioni degli IHV?
Questo è falsissimo. Prima di Vista Microsoft NON offriva NESSUNA libreria OpenGL: erano i produttori delle scheda video a installare il miniport OpenGL, altrimenti non c'era una mazza.
Beh, ha sempre fornito (e fornisce ancora) la libreria software rendering con opengl 1.1.
Progetti come WINE ti smentiscono.
Le DirectX sono nate per offrire strumenti più comodi agli sviluppatori. Ed è proprio per questo motivo che alla fine sono diventate le più usate: perché gli sviluppatori hanno SCELTO LIBERAMENTE gli strumenti che per loro erano più produttivi.
Al solito, tu vivi in un mondo parallelo e confondi la realtà coi tuoi desideri di fanboy open*.
No aspetta, non confondiamo le cose... le directx non sono nate come strumento per rendere più comoda la vita agli sviluppatori, sono nate come sistema usato dalla microsoft per tenere sotto controllo il mercato dei giochi sulla sua piattaforma (un elemento fondamentale per il mercato consumer dei computer di allora e , anche se meno per lo stradominio delle console, anche di oggi).
Che poi lo sviluppo impegnato da parte di microsoft le abbia trasformate in ottime librerie che fanno bene il loro dovere è tutto un altro paio di maniche, ma all'epoca quando la microsoft ha tirato fuori dal cilindro le directx lo ha fatto solo per non vedersi sfilare dalle mani un redditizio mercato.
pabloski
10-10-2011, 18:10
Progetti come WINE ti smentiscono.
se wine emulasse fino a windows 7 perfettamente e se non esistessero i brevetti, allora sarebbe come dici tu
Le DirectX sono nate per offrire strumenti più comodi agli sviluppatori. Ed è proprio per questo motivo che alla fine sono diventate le più usate: perché gli sviluppatori hanno SCELTO LIBERAMENTE gli strumenti che per loro erano più produttivi.
quando nacquero sicuramente erano molto al di sotto di opengl....ms faceva parte del khronos group e poteva benissimo cooperare se teneva tanto all'interoperabilità....voglio dire, non è il khronos group era pieni di comunisti brutti e cattivi pronti a sbranare il povero bambolotto Guglia :D
del resto il motto "embrace, extend, extinguish" non è stato creato per caso
Al solito, tu vivi in un mondo parallelo e confondi la realtà coi tuoi desideri di fanboy open*.
certo, ho le mie simpatie
però se mi vieni a dire che directx non è nato per distruggere opengl, dici cose fuori dal mondo....secondo te ms avrebbe creato directx per beneficenza?
p.s. mi meraviglio di leggere che proprio il ( più volte ) citato Carmack, critico feroce di opengl, continui a far perno proprio su opengl....questo tizio o è masochista o ne sa più di noi ( suppongo la seconda )
AnonimoVeneziano
10-10-2011, 18:39
p.s. mi meraviglio di leggere che proprio il ( più volte ) citato Carmack, critico feroce di opengl, continui a far perno proprio su opengl....questo tizio o è masochista o ne sa più di noi ( suppongo la seconda )
Non è facile passare da un qualcosa che il tuo studio ha usato per un decennio a un altra tecnologia facilmente (se non altro per tutti i tools che hai accumulato nel tempo). Sinceramente credo che se dovesse scegliere ora che libreria usare per il suo prossimo motore sceglierebbe Direct3D su Windows. Se non altro per il casino dei drivers ... comunque i problemi di Rage e le critiche che ha ricevuto non sono solo causate dai drivers, ma anche dal fatto che il gioco è stato programmato per le console e portato PARO PARO su PC e alcune texture hanno una qualità scanadalosa (nonostante i 25 GB di gioco) e sappiamo quanto i gamers su PC siano sensibili alla questione "porting da console" e se fatto addirittura da niente popo di meno che carmack in persona .... gli animi si scaldano.
cdimauro
10-10-2011, 19:00
Esempi che non siano collegati ai problemi tecnici delle implementazioni degli IHV?
Audio, network, dispositivi di input, direct compute.
Beh, ha sempre fornito (e fornisce ancora) la libreria software rendering con opengl 1.1.
Con Vista hai le 1.4 accelerate in hardware.
No aspetta, non confondiamo le cose... le directx non sono nate come strumento per rendere più comoda la vita agli sviluppatori, sono nate come sistema usato dalla microsoft per tenere sotto controllo il mercato dei giochi sulla sua piattaforma (un elemento fondamentale per il mercato consumer dei computer di allora e , anche se meno per lo stradominio delle console, anche di oggi).
Che poi lo sviluppo impegnato da parte di microsoft le abbia trasformate in ottime librerie che fanno bene il loro dovere è tutto un altro paio di maniche, ma all'epoca quando la microsoft ha tirato fuori dal cilindro le directx lo ha fatto solo per non vedersi sfilare dalle mani un redditizio mercato.
Questo senza dubbio, ma il consorzio è sempre stato molto lento nel rilasciare nuove versioni delle OpenGL. Inoltre c'era l'esigenza di strutturare meglio le API, in maniera più comoda e produttiva, appunto.
se wine emulasse fino a windows 7 perfettamente e se non esistessero i brevetti, allora sarebbe come dici tu
I brevetti sono trasversali alle librerie, dovresti saperlo.
Tolti di mezzo eventuali brevetti, nessuno t'impedisce di implementare qualunque funzionalità delle DirectX (anche le 11).
quando nacquero sicuramente erano molto al di sotto di opengl....ms faceva parte del khronos group e poteva benissimo cooperare se teneva tanto all'interoperabilità....voglio dire, non è il khronos group era pieni di comunisti brutti e cattivi pronti a sbranare il povero bambolotto Guglia :D
Vedi la risposta ad Anonimo.
del resto il motto "embrace, extend, extinguish" non è stato creato per caso
Che guarda caso risulta totalmente inapplicabile alle DirectX, che erano delle API molto diverse dalle OpenGL.
Nemmeno la "embrace" sarebbe applicabile.
certo, ho le mie simpatie
però se mi vieni a dire che directx non è nato per distruggere opengl, dici cose fuori dal mondo....secondo te ms avrebbe creato directx per beneficenza?
Certamente no, aveva e ha i suoi interessi. Purtroppo dimentichi la cosa più importante: Microsoft è un'azienda che è diventata quello che è grazie al software.
Sa bene, avendo anche commercializzato compilatori e IDE da tantissimi anni, quali sono le esigenze degli sviluppatori.
Dagli sviluppatori arriva il software. Dal software la forza di una piattaforma, come Windows. E il cerchio si chiude.
Tant'è che, come dicevo, nessuno ha obbligato gli sviluppatori ad abbracciare le DirectX e abbandonare le OpenGL. Prima hanno scelto le Glide, poi le OpenGL, e infine le DirectX. Senza che nessuno puntasse loro una pistola alla testa. Chiediti il perché...
p.s. mi meraviglio di leggere che proprio il ( più volte ) citato Carmack, critico feroce di opengl,
Da quando? Perché è stato, al contrario, un orgoglioso e fanatico sostenitore delle OpenGL, e non ha perso occasione per disprezzare le DirectX.
Negli ultimi anni ha espresso APPREZZAMENTO per le DirectX, riconoscendo che sono delle API (librerie) molto ben fatte e superiori alle OpenGL per quello che offrono agli sviluppatori.
Ma da qui a parlare di critica feroce alle OpenGL mi sembra che tu stia facendo il passo ben più lungo della gamba.
Dovresti aver capito da un pezzo che elogiare qualcosa non implica necessariamente schierarsi dalla parte opposta.
continui a far perno proprio su opengl....questo tizio o è masochista o ne sa più di noi ( suppongo la seconda )
Lavora da anni con le OpenGL, com'è già stato detto. Le conosce bene, e usa ancora quelle, facilitando il porting su Mac e Linux, cosa che non è mai mancata per i suoi prodotti.
AnonimoVeneziano
10-10-2011, 20:59
Audio, network, dispositivi di input, direct compute.
DirectSound è deprecated da Windows Vista
DirectPlay (oddio, si chiamava così??) è deprecated da prima della venuta del signore.
DirectInput vedi DirectPlay
Direct compute vedi OpenCL che è perfettamente integrato con OpenGL (OpenCL è sempre khronos come OpenGL)
Con Vista hai le 1.4 accelerate in hardware.
Era comunque per dire che MS ha sempre fornito una implementazione OpenGL nei suoi SO anche prima di vista ;)
Comunque credo che praticamente nessuno abbia mai usato o se ne faccia qualcosa di queste 1.4 accelerate con vista dato che non mi viene in mente neanche una casa produttrice di schede video che non rilasci ICD opengl insieme ai drivers Direct3D.
Questo senza dubbio, ma il consorzio è sempre stato molto lento nel rilasciare nuove versioni delle OpenGL. Inoltre c'era l'esigenza di strutturare meglio le API, in maniera più comoda e produttiva, appunto.
Le prime direct3d erano tutt'altro che più funzionali o produttive. Persino uno dei creatori delle basi su cui si fondarono le directx (Chris Hecker) all'epoca si levò per chiedere alla Microsoft di supportare opengl e lasciare perdere l'Immediate Mode di Directx (quello usato per i giochi). La lista degli sviluppatori di allora è molto lunga e oltre a Hecker comprende anche Carmack e Brian Hook (autore tra l'altro di uno dei tutorial più famosi dell'epoca per iniziare a programmare con directdraw e direct3d). La microsoft non mollò , spinse sulle direct3d in vari modi tra cui diverse campagne di marketing cercando di convincere tutti che le directx erano inerentemente più veloci delle Opengl (riuscendoci in parte, nonostante non fosse vero) . Ma una delle mosse scorrette della microsoft contro opengl all'epoca fu quella di cambiare di punto in bianco il modo in cui si dovevano implementare i drivers OpenGL su Windows e praticamente senza preavviso.
All'epoca esistevano due modi per implementare i drivers OpenGL su Windows NT (all'inizio Windows 95 non supportava drivers OpenGL):
- Un interfaccia chiamata MCD (Mini-Client Driver) che si appoggiava all'implementazione OpenGL che microsoft distribuiva insieme al SO (quella che ho menzionato sopra a riguardo del fatto che Vista ha supporto a Opengl 1.4 via d3d) e per la quale era particolarmente facile scrivere i drivers
- Un interfaccia chiamata ICD (Installable-Client Driver, quella che ancora oggi persiste) che invece era più complessa e prevedeva che il driver sostituisse completamente l'implementazione opengl fornita dal sistema operativo con una sviluppata da parte dell IHV.
Microsoft consigliava l'utilizzo dell'interfaccia MCD per lo sviluppo dei drivers OpenGL perchè così era possibile svilupparli più velocemente e fu quello che praticamente la totalità dei vendor fece (usare MCD). Nel 97 poi la Microsoft decise con molto poco preavviso di deprecare e rimuovere l'interfaccia MCD (che non vide mai la luce in Windows 95, ma venne usata solo su NT) mantenendo solo l'interfaccia ICD.
Ovviamente tutti i drivers dovevano essere riscritti nella (più complicata) versione ICD e questo diede un certo vantaggio iniziale a Direct3D che gli permise di superare le fasi più disperate del suo sviluppo (ossia quelle in cui uno per disegnare qualcosa doveva usare gli "Execute buffers" ... brr) . Era proprio in questo periodo che usci Quake e le case produttrici di HW furono costretti a tirare fuori i famosi MiniGL drivers (i primi drivers ICD OpenGL che supportavano solo un subset della API per Windows) per far girare il famosissimo gioco ID Software (di fine '96) in hardware ... un tempismo perfetto da parte di MS :)
Piano piano microsoft capitalizzando sul vantaggio iniziale e continuando a spingere arrivò a fare di Directx prima una API accettabile, poi discreta, poi buona e infine ottima. A questo punto era la MS il centro dell'attenzione e non più OpenGL e per una API che è sviluppata attraverso l'interesse dell'industry su di essa ovviamente è stato un disastro e parte della causa di tutto quello che è venuto dopo.
Oggi comunque OpenGL ha ripreso molto del terreno perso anche perchè c'è nuovo interesse nei confronti dell'API, vuoi per via di tutti questi dispositivi mobili (telefoni , tablet ... etc) che adesso vanno tanto di moda e che quasi tutti supportano solo OpenGL (e sono ottimi per i "giochini" con chip grafici sono potentissimi per la risoluzione che devono muovere) o per nostalgia o per il problema che Windows XP è ancora il SO più diffuso e Directx 10 e 11 sono Vista+ only... fatto sta che in poco tempo OpenGL ha colmato il gap di funzionalità e addirittura ha superato Direct3D con alcune feature integrate nell'ultimo standard 4.2 (che possono dare buoni boost alle performance , anche se probabilmente non sono funzionalità che la maggior parte degli sviluppatori faranno a botte per usare).
Ora manca solo il DSA che è una vita che gli sviluppatori chiedono ai capoccia di Opengl di integrare nello standard ma nisba ...
A partire da Vista Microsoft offre una wrapper OpenGL 1.4 (se non erro) sulle DirectX 10+. Quindi anche se non viene installato nessun miniport OpenGL, come minimo le OpenGL sono sempre a disposizione, seppur limitate a quella versione. Poi, al solito, se i produttori installano il miniport, avrei a disposizione le OpenGL aggiornate (e senza passare dalle DirectX).
Purtroppo questa è una grossa schifezza... nessuno sviluppatore si sognerebbe mai di sviluppare sulla versione MS, è una cosa scandalosa.
Tra niente e quella probabilmente sarebbe stato molto meglio niente.
E' stata solo una giustificazione per certe compagnie tipo Intel per non includere OpenGL nei drivers, con il risultato di rendere giochi anche banali ingiocabili.
Purtroppo che MS abbia lobbizzato pesantemente OpenGL non c'è alcun dubbio: a parte in quel periodo in cui Khronos era pesantemente impegnata a darsi la zappa sui piedi, GL e DX sono sempre state alla pari come features.
Si, DX ha migliore documentazione, e si, DX ha un'API più moderna, ma da sviluppatore esperto che miro a pubblicare un gioco su più piattaforme non me ne può fregare di meno.
E' sicuramente più facile impararsi OpenGL che impararsi OpenGL E ANCHE DX, tu che dici :asd:
Spero proprio che per Windows 8 faranno qualche passo per migliorare OpenGL, quantomeno per rendere più facili i porting da iPad e soci. Ma chissà perchè, non ci credo per niente :D
PS: MS non se lo sarebbe mai aspettato, ma nel giro di 5 anni DX è diventata una piattaforma di nicchia. Strano ma vero, ed è anche colpa di MS che con XNA e soci hanno allontanato moltissimi dalla conoscenza dell'API.
cdimauro
11-10-2011, 06:25
DirectSound è deprecated da Windows Vista
DirectPlay (oddio, si chiamava così??) è deprecated da prima della venuta del signore.
DirectInput vedi DirectPlay
Direct compute vedi OpenCL che è perfettamente integrato con OpenGL (OpenCL è sempre khronos come OpenGL)
Non ho parlato di Direct* (a parte compute, perché non mi veniva un'etichetta migliore).
In generale Windows offre delle librerie in un "ecosistema" per tutto quello che serve.
Era comunque per dire che MS ha sempre fornito una implementazione OpenGL nei suoi SO anche prima di vista ;)
OK
Comunque credo che praticamente nessuno abbia mai usato o se ne faccia qualcosa di queste 1.4 accelerate con vista dato che non mi viene in mente neanche una casa produttrice di schede video che non rilasci ICD opengl insieme ai drivers Direct3D.
A parte Intel? :D
Comunque è una buona cosa che lo facciano praticamente tutti.
Le prime direct3d erano tutt'altro che più funzionali o produttive. Persino uno dei creatori delle basi su cui si fondarono le directx (Chris Hecker) all'epoca si levò per chiedere alla Microsoft di supportare opengl e lasciare perdere l'Immediate Mode di Directx (quello usato per i giochi). La lista degli sviluppatori di allora è molto lunga e oltre a Hecker comprende anche Carmack e Brian Hook (autore tra l'altro di uno dei tutorial più famosi dell'epoca per iniziare a programmare con directdraw e direct3d). La microsoft non mollò , spinse sulle direct3d in vari modi tra cui diverse campagne di marketing cercando di convincere tutti che le directx erano inerentemente più veloci delle Opengl (riuscendoci in parte, nonostante non fosse vero) .
Sì, all'inizio la situazione era quella, e Carmack & co. avevano ben motivo di lamentarsi (infatti avevo già detto che non le ha risparmiato critiche in passato).
Un progetto così ambizioso non si poteva portare avanti in così poco tempo.
Peraltro all'epoca c'erano pure le GLIDE che facevano le scarpe a tutti.
Ma una delle mosse scorrette della microsoft contro opengl all'epoca fu quella di cambiare di punto in bianco il modo in cui si dovevano implementare i drivers OpenGL su Windows e praticamente senza preavviso.
All'epoca esistevano due modi per implementare i drivers OpenGL su Windows NT (all'inizio Windows 95 non supportava drivers OpenGL):
- Un interfaccia chiamata MCD (Mini-Client Driver) che si appoggiava all'implementazione OpenGL che microsoft distribuiva insieme al SO (quella che ho menzionato sopra a riguardo del fatto che Vista ha supporto a Opengl 1.4 via d3d) e per la quale era particolarmente facile scrivere i drivers
- Un interfaccia chiamata ICD (Installable-Client Driver, quella che ancora oggi persiste) che invece era più complessa e prevedeva che il driver sostituisse completamente l'implementazione opengl fornita dal sistema operativo con una sviluppata da parte dell IHV.
Microsoft consigliava l'utilizzo dell'interfaccia MCD per lo sviluppo dei drivers OpenGL perchè così era possibile svilupparli più velocemente e fu quello che praticamente la totalità dei vendor fece (usare MCD). Nel 97 poi la Microsoft decise con molto poco preavviso di deprecare e rimuovere l'interfaccia MCD (che non vide mai la luce in Windows 95, ma venne usata solo su NT) mantenendo solo l'interfaccia ICD.
OK, ma quest'approccio ha almeno un vantaggio: l'implementazione è più ottimizzata (il produttore può fare quello che vuole), a beneficio della velocità d'esecuzione.
Sul resto concordo.
Purtroppo questa è una grossa schifezza... nessuno sviluppatore si sognerebbe mai di sviluppare sulla versione MS, è una cosa scandalosa.
Tra niente e quella probabilmente sarebbe stato molto meglio niente.
E' stata solo una giustificazione per certe compagnie tipo Intel per non includere OpenGL nei drivers, con il risultato di rendere giochi anche banali ingiocabili.
Ma la situazione con le OpenGL 1.1 esclusivamente software non era anche peggio? :D
Purtroppo che MS abbia lobbizzato pesantemente OpenGL non c'è alcun dubbio: a parte in quel periodo in cui Khronos era pesantemente impegnata a darsi la zappa sui piedi, GL e DX sono sempre state alla pari come features.
Hai detto niente: è stato il periodo in cui le DirectX sono divenute le API di riferimento per gli sviluppatori.
Si, DX ha migliore documentazione, e si, DX ha un'API più moderna, ma da sviluppatore esperto che miro a pubblicare un gioco su più piattaforme non me ne può fregare di meno.
E' sicuramente più facile impararsi OpenGL che impararsi OpenGL E ANCHE DX, tu che dici :asd:
Permettimi: questa è una situazione che s'è creata soltanto di recente, con l'esplosione di smartphone & affini.
Perché nemmeno le console si programmano con le OpenGL.
Spero proprio che per Windows 8 faranno qualche passo per migliorare OpenGL, quantomeno per rendere più facili i porting da iPad e soci. Ma chissà perchè, non ci credo per niente :D
Soprattutto non vedo perché dovrebbe farlo. :ciapet:
PS: MS non se lo sarebbe mai aspettato, ma nel giro di 5 anni DX è diventata una piattaforma di nicchia. Strano ma vero, ed è anche colpa di MS che con XNA e soci hanno allontanato moltissimi dalla conoscenza dell'API.
E sarà sempre più così in futuro. Più astrazione e meno dettagli di basso livello.
E' legge di natura. :O
cdimauro
11-10-2011, 06:26
DOPPIO. :(
Ma la situazione con le OpenGL 1.1 esclusivamente software non era anche peggio? :D
Non lo so, non c'ero in quell'epoca :D Ma comunque se bisogna supportare uno standard bisogna supportarlo in maniera completa, altrimenti è solo un modo per danneggiare chi lo usa e obbligarlo a scervellarsi per i tuoi "special cases", vedi IE6.
Permettimi: questa è una situazione che s'è creata soltanto di recente, con l'esplosione di smartphone & affini.
Perché nemmeno le console si programmano con le OpenGL.
E' vero, ma comunque se uno programma per console non ha alcun problema a passare a OpenGL. Sia perchè le varie librerie "proprietarie" sono in realtà piuttosto simili se non scendi a basso livello (addirittura 3DS usa OpenGL ES) sia perchè se uno sviluppa per console si presuppone che abbia una conoscenza delle API tale che OGL o DX fa poca differenza.
Il che significa che la strategia di chiusura di MS su "questa gente" è controproducente, perchè non ha nessun problema a supportarti o non supportarti a seconda del guadagno che offri, vedi Carmack.
Soprattutto non vedo perché dovrebbe farlo. :ciapet:
Dovrebbe farlo perchè nel 2012 dovrebbe essersi resa conto che il flop annunciato di Windows phone dipende solo dall'odio degli sviluppatori verso la piattaforma, odio causato dalla scelta di auto-ghettizzarsi rispetto tutto il resto del mercato e rendere i porting da/a qualsiasi altra piattaforma di successo più che altro una riscrittura.
Se la tua piattaforma conta per l'1% devi aprire le porte, non chiuderle, altrimenti non entra nessuno :D
Sembra ovvio, ma mai abbastanza.
E sarà sempre più così in futuro. Più astrazione e meno dettagli di basso livello.
E' legge di natura. :O
No non dicevo questo... DX è stata mangiata da XNA alla fine solo in termini di "potenziali dev futuri" perchè poi a conti fatti XNA è una tech inadatta a giochi professionali, al contrario di DX.
E quindi in realtà il livello si è abbassato, perchè c'è in atto un "risorgimento" proprio di OpenGL + C++ tanto odiati dalla MS.
Oppure si punta all'astrazione massima e si va di browser, anche qua fuori dall'ecosistema MS.
In breve, quello che sto dicendo è che MS non ne acchiappa più una :asd:
AnonimoVeneziano
11-10-2011, 13:07
Non ho parlato di Direct* (a parte compute, perché non mi veniva un'etichetta migliore).
In generale Windows offre delle librerie in un "ecosistema" per tutto quello che serve.
Mmm, non capisco il discorso ... tu avevi detto che directx offre di più di quello che offre opengl ("Ha già le directx che vanno ben oltre le opengl"), ti ho chiesto un esempio e mi hai parlato di rete, audio ...etc ... è ovvio che io penso a Direct* :p , invece viene fuori che intendevi le API di Windows che con directx non c'entrano molto ... alla fine il fatto che praticamente tutte le componenti di directx sono state deprecate a favore delle API di Windows (a parte directshow) è dimostrazione che per delle librerie di basso livello (come directx o opengl) creare una libreria unificata per gestire insieme tutto ciò che serve a un gioco è inutile. L'astrazione per rete, controlli, suono ... etc la fa già il motore di gioco, non c'è bisogno che ci pensi anche la microsoft a fornire un interfaccia unificata per lo sviluppo per lo più inferiore a quello che un motore medio può proporre.
A parte Intel? :D
Questa di intel sinceramente non la sapevo, io su XP sul netbook ho un ICD OpenGL 1.4 per la mia GMA495, pensavo che fosse stato portato uguale anche su vista+ :boh:
Sì, all'inizio la situazione era quella, e Carmack & co. avevano ben motivo di lamentarsi (infatti avevo già detto che non le ha risparmiato critiche in passato).
Un progetto così ambizioso non si poteva portare avanti in così poco tempo.
Peraltro all'epoca c'erano pure le GLIDE che facevano le scarpe a tutti.
Un progetto ambizioso che se era per fare un bene ai programmatori potevano anche risparmiarsi all'epoca, perchè l'alternativa c'era , la volevano tutti tranne loro e bastava impegnarsi per farla crescere anzichè cercare di distruggerla (sto parlando di opengl ovviamente). Alla fine, se non fosse stato che SGI per qualche ragione si era svegliata in anticipo capendo la situazione, buttando fuori un reference ICD insieme a SciTech a tempo di record permettendo agli IHV di creare drivers MiniGL in tempi ragionevoli e se non fosse stato per il traino di Quake che usava OGL difficilmente saremmo qui a parlare di OpenGL oggi .
Indipendentemente da quello che Direct3D (unico superstite delle vecchie DirectX) rappresenta oggi per l'industry all'epoca era nato solo e unicamente per controllare il mercato dei giochi 3D su Windows , impedire porting facili e sfruttare il vantaggio di diffusione della piattaforma.
Etico? Non etico? Ognuno ha le sue idee a riguardo e non voglio entrare nell'argomento, ma il pensiero che la microsoft quando ha creato directx voleva rendere il mondo dei videogiochi 3D più produttivo mi fa ridere, perchè di fatto il risultato è stato che per un paio d'anni ha ottenuto l'esatto contrario innescando una guerra fra API tra una libreria incompleta perchè appena nata (Direct3D) e una completa ma con supporto driver tutto da reimplementare (OpenGL).
Non sarei mai voluto essere uno sviluppatore di videogiochi in quel periodo ...
OK, ma quest'approccio ha almeno un vantaggio: l'implementazione è più ottimizzata (il produttore può fare quello che vuole), a beneficio della velocità d'esecuzione.
Allora dovrebbero fare la stessa cosa con Direct3D visto che c'è questo vantaggio.
Invece di distribuire una implementazione della libreria insieme al sistema operativo e poi far scrivere i drivers di basso livello agli IHV (che è come avviene adesso per Direct3D e come avveniva con MCD per OGL) perchè non far reimplementare tutta la libreria Direct3D agli IHV ,così se la possono ottimizzare come vogliono tutto a vantaggio della velocità di esecuzione e a beneficio nostro :sofico:
AnonimoVeneziano
11-10-2011, 13:10
Non lo so, non c'ero in quell'epoca :D
Hai 5 anni? :sofico:
Alla fine era quello che faceva con Windows XP :p
Hai 5 anni? :sofico:
Alla fine era quello che faceva con Windows XP :p
:asd:
Nel senso che 5 anni fa non sapevo nemmeno da che parte iniziava un'API grafica, quindi mi sono perso la faccenda in dettaglio.
Sicuramente si, l'API era peggio di quella attuale cmq.
cdimauro
12-10-2011, 19:08
Finito l'articolo, rieccomi. :D
Non lo so, non c'ero in quell'epoca :D
Bah. Questi giovIni, sempre a lamentarsi... :O
Ma comunque se bisogna supportare uno standard bisogna supportarlo in maniera completa, altrimenti è solo un modo per danneggiare chi lo usa e obbligarlo a scervellarsi per i tuoi "special cases",
OpenGL non è uno standard. Non quanto non lo siano le DirectX, per lo meno.
vedi IE6.
Hai citato l'esempio sbagliato. Il difetto di IE6 è di aver implementato parte di uno standard ancora immaturo e sul quale POI è dovuto nuovamente intervenire il W3C. :read:
Il secondo, grosso, difetto è stato quello di essere rimasto sul mercato per troppo tempo. D'altra parte Vista, col suo IE7, ha impiegato 5 anni per arrivare, che informaticamente parlando sono un'eternità.
E' vero, ma comunque se uno programma per console non ha alcun problema a passare a OpenGL. Sia perchè le varie librerie "proprietarie" sono in realtà piuttosto simili se non scendi a basso livello (addirittura 3DS usa OpenGL ES) sia perchè se uno sviluppa per console si presuppone che abbia una conoscenza delle API tale che OGL o DX fa poca differenza.
Il che significa che la strategia di chiusura di MS su "questa gente" è controproducente, perchè non ha nessun problema a supportarti o non supportarti a seconda del guadagno che offri, vedi Carmack.
Sì, ma intanto citi il 3DS che è uscito appena quest'anno, quando le DirectX sono arrivate a fine dello scorso millennio.
E poi se non c'è difficoltà a usare OpenGL o DirectX, il discorso non si pone, no? :fagiano:
Alla fine rimane in piedi soltanto una cosa: la convenienza nell'usare l'una oppure l'altra.
Dovrebbe farlo perchè nel 2012 dovrebbe essersi resa conto che il flop annunciato di Windows phone dipende solo dall'odio degli sviluppatori verso la piattaforma, odio causato dalla scelta di auto-ghettizzarsi rispetto tutto il resto del mercato e rendere i porting da/a qualsiasi altra piattaforma di successo più che altro una riscrittura.
Se la tua piattaforma conta per l'1% devi aprire le porte, non chiuderle, altrimenti non entra nessuno :D
Sembra ovvio, ma mai abbastanza.
Rispetto alle altre piattaforme mobile, sicuramente.
Ma se WP7 ha sposato XNA, è perché Microsoft aveva già realizzato un ecosistema rodato con la 360, per cui era proprio per facilitare il porting / passaggio a questa nuova piattaforma mobile.
Idem la scelta di Silverlight. Nell'ottica Microsoft questo aveva un senso, e come sviluppatore l'ho apprezzata.
Purtroppo il problema è che le piattaforme sono tutte molto diverse fra loro, in particolare per lo sviluppo delle applicazioni. Per i giochi ci sono diverse soluzioni, e sicuramente la presenza di OpenGL potrebbe servire come collante, ma siccome tutto il resto è abbastanza diverso, ecco che arrivano soluzioni come Unity.
No non dicevo questo... DX è stata mangiata da XNA alla fine solo in termini di "potenziali dev futuri" perchè poi a conti fatti XNA è una tech inadatta a giochi professionali, al contrario di DX.
E quindi in realtà il livello si è abbassato, perchè c'è in atto un "risorgimento" proprio di OpenGL + C++ tanto odiati dalla MS.
Oppure si punta all'astrazione massima e si va di browser, anche qua fuori dall'ecosistema MS.
In breve, quello che sto dicendo è che MS non ne acchiappa più una :asd:
ROFL. :ciapet: Per i giochi professionali hai ragione. Ma XNA ha avvicinato molta gente allo sviluppo dei giochi, senza per questo farsi male con le OpenGL e, peggio ancora, col C++.
Poi se, come dicevi sopra, un programmatore è bravo, non avrà difficoltà a passare a OpenGL, DirectX, o a qualunque altra libreria.
Certo, in questo momento la situazione non è delle migliori per Microsoft, ma era difficile prevederlo. Come dicevo sopra, le DirectX e XNA mica sono nate ieri, eh! :read:
Mmm, non capisco il discorso ... tu avevi detto che directx offre di più di quello che offre opengl ("Ha già le directx che vanno ben oltre le opengl"), ti ho chiesto un esempio e mi hai parlato di rete, audio ...etc ... è ovvio che io penso a Direct* :p , invece viene fuori che intendevi le API di Windows che con directx non c'entrano molto ... alla fine il fatto che praticamente tutte le componenti di directx sono state deprecate a favore delle API di Windows (a parte directshow) è dimostrazione che per delle librerie di basso livello (come directx o opengl) creare una libreria unificata per gestire insieme tutto ciò che serve a un gioco è inutile. L'astrazione per rete, controlli, suono ... etc la fa già il motore di gioco, non c'è bisogno che ci pensi anche la microsoft a fornire un interfaccia unificata per lo sviluppo per lo più inferiore a quello che un motore medio può proporre.
Hai ragione, ho mischiato un po' di cose. Comunque le DirectX non sono per lo più deprecate. Ad esempio DirectSound tornerà con 8, dopo una lunga gestazione post-Vista (dov'erano sparite).
D'altra parte se ci sono le OpenGL, OpenCl, e OpenAL, è proprio perché c'è l'esigenza di coprire questi aspetti per chi sviluppa. In futuro arriverà anche la fisica, ad esempio.
Un progetto ambizioso che se era per fare un bene ai programmatori potevano anche risparmiarsi all'epoca, perchè l'alternativa c'era , la volevano tutti tranne loro e bastava impegnarsi per farla crescere anzichè cercare di distruggerla (sto parlando di opengl ovviamente).
Veramente all'epoca non è che c'era alternativa. Come dicevo, c'erano le GLIDE che DOMINAVANO, ed erano le librerie di riferimento, seppur proprietarie.
Alla fine, se non fosse stato che SGI per qualche ragione si era svegliata in anticipo capendo la situazione, buttando fuori un reference ICD insieme a SciTech a tempo di record permettendo agli IHV di creare drivers MiniGL in tempi ragionevoli e se non fosse stato per il traino di Quake che usava OGL difficilmente saremmo qui a parlare di OpenGL oggi .
Allora non era così complicato sviluppare un driver MiniGL. :fagiano:
Indipendentemente da quello che Direct3D (unico superstite delle vecchie DirectX) rappresenta oggi per l'industry all'epoca era nato solo e unicamente per controllare il mercato dei giochi 3D su Windows , impedire porting facili e sfruttare il vantaggio di diffusione della piattaforma.
OK.
Etico? Non etico? Ognuno ha le sue idee a riguardo e non voglio entrare nell'argomento, ma il pensiero che la microsoft quando ha creato directx voleva rendere il mondo dei videogiochi 3D più produttivo mi fa ridere, perchè di fatto il risultato è stato che per un paio d'anni ha ottenuto l'esatto contrario innescando una guerra fra API tra una libreria incompleta perchè appena nata (Direct3D) e una completa ma con supporto driver tutto da reimplementare (OpenGL).
Questo è vero per le prime versioni, ma l'avevo già detto. Alla fine, pur con tutti i casini che ci sono stati i programmatori hanno continuato a utilizzare le OpenGL, preferendole alle DirectX.
E' stato a partire dalla versione 6 (SEI, eh!) che le DirectX hanno cominciato a ritagliarsi sempre più spazio, fino a dominare il mercato con le 8 e 9. Ed è stato per una libera scelta degli sviluppatori, appunto, che hanno potuto sfruttare strumenti di sviluppo (le librerie sono soltanto una parte, molto importante sicuramente, di tutto l'ecosistema) comodi e produttivi.
D'altra parte l'hai detto anche tu: le prime versioni erano orribili. Col tempo, però, la situazione è migliorata di gran lunga.
Non sarei mai voluto essere uno sviluppatore di videogiochi in quel periodo ...
Mah. Come dicevo, all'epoca c'erano le GLIDE, che erano anche molto semplici da programmare, e hanno spopolato. E' stata la disfatta di 3DFX che ha sostanzialmente messo alla porta questa libreria, lasciando il passo a OpenGL e DirectX, con queste ultime che ancora non erano messe bene.
Infatti il periodo post-GLIDE è stato dominato dalle OpenGL, come dicevo. Le DirectX hanno guadagnato spazio dopo, una volta maturate.
Allora dovrebbero fare la stessa cosa con Direct3D visto che c'è questo vantaggio.
Invece di distribuire una implementazione della libreria insieme al sistema operativo e poi far scrivere i drivers di basso livello agli IHV (che è come avviene adesso per Direct3D e come avveniva con MCD per OGL) perchè non far reimplementare tutta la libreria Direct3D agli IHV ,così se la possono ottimizzare come vogliono tutto a vantaggio della velocità di esecuzione e a beneficio nostro :sofico:
Ma guarda che mi trovi d'accordo. Adesso non ricordo il nome del progetto, ma c'è un gruppetto di sviluppatori che hanno realizzato un'implementazione delle DirectX10 (saranno andati avanti sicuramente a questo punto) per Linux che, se non ricordo male, aveva richiesto 40mila righe di codice.
Se pensi che stiamo parlando dell'implementazione di tutte le DX10, è una miseria...
D'altra parte le DX10 sono nate per essere molto più semplici da usare e da implementare, sulla scorta delle precedenti esperienze. Per cui ci si potrebbe tranquillamente permettere il lusso di demandare agli IHV l'implementazione, continuando però a fornire uno stub in alternativa come fallback. ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.