Che cosa rende esattamente la piattaforma dei programmi dipendente quando utilizzano API multipiattaforma?

0

Capisco che i linguaggi di programmazione possono essere eseguiti in una VM (Java, ecc.) su ogni sistema operativo che supporta la macchina virtuale in modo nativo o possono essere compilati in codice macchina (C, ecc.) per ogni piattaforma.

Ciò che non capisco è perché i programmi (che si occupano di API grafiche come OpenGL, DirectX12 o Mantle o non ne gestiscono affatto) non sono tutti multipiattaforma se è facile come la compilazione incrociata?

Che cosa impedisce a programmi, giochi, API (ad esempio OpenGL) di essere compatibili su tutte le piattaforme (eccetto che forse gli sviluppatori lo volevano su un'unica piattaforma)?

Con la nuova API grafica, Vulkan, che uscirà presto, sarebbe teoricamente possibile se si utilizzasse un toolkit come wxWidgets, per la GUI nativa, insieme a un'API come Vulkan per creare programmi che girano completamente su piattaforma fintanto che il SO ha un driver Vulkan? Qualsiasi altro punto di vista su qualcosa che mi manca sarebbe apprezzato.

    
posta Coleman Tyler 23.12.2015 - 19:06
fonte

2 risposte

4

With the new graphics API, Vulkan, coming out soon, would it be theoretically possible if using a toolkit like wxWidgets, for native GUI, along with an API like Vulkan to create programs that run completely cross platform as long as the OS has a Vulkan driver?

Hai risposto alla tua domanda.

Il driver Vulkan deve essere scritto per ogni sistema / sistema operativo, e non tutti i sistemi saranno compatibili con quanto richiesto da Vulkan.

    
risposta data 23.12.2015 - 19:32
fonte
1

Le API si sommano l'una sull'altra aggiungendo valore. I fornitori di hardware hanno una scelta tra gli standard, poi c'è il firmware, poi gli ABI degli interpreti e dei toolchain di build, scelti dai venditori di monitor / OS, che portano alla fine degli script CRLF-NL combinazioni ed ELF & Eseguibili COFF. Il C ++ 17 in arrivo ha una proposta di moduli, ma fino a quel momento i sovraccarichi hanno costretto i produttori a cercare di avere un'ampia copertura hardware per favorire i fornitori di software di sistema che usano la convenzione C (o qualcosa di abbastanza vicino alla chiarezza). Così tante parti interessate provano a soddisfare così tante diverse possibilità contemporaneamente, se un programma software di soluzione dovesse coprire molte di queste, allora il carico utile dell'eseguibile sarebbe gonfiato nei momenti in cui lo spazio su disco era prezioso ... causa della dipendenza dalla piattaforma

Vulkan (per maggiori informazioni), se tutto va bene, ci si aspetta che gli sviluppatori lavorino con la grafica bypassando i wrapper di binding intermedi, quando le aggiunte di valore saranno comunque inutilizzate. Senza impegnare la carriera in C, simili sforzi precedenti venivano fatti tramite DCOM / XPCOM ...

    
risposta data 28.12.2015 - 11:26
fonte

Leggi altre domande sui tag