Vorrei gentilmente sapere come o con quali strumeti posso creare una libreria grafica e la sua API da zero ovvero spiegando alla scheda grafica il significato di tutti i comandi che invento io e quello che deve disegnare sullo schermo. Io ho solo un'infarinatura di un paio di linguaggi quindi non saprei cosa fare a proposito. L'idea mia è di creare una libreria potente quanto direct x in modo da sfruttare al massimo l'hardware delle schede video e di poter creare un motore grafico naturalmente integrando altre conoscenze. Poi un'ultima domanda: un linguaggio di programmazione può essere usato per fare ogni tipo di programma che può girare su qualsiasi macchina (incluse le console) con le sue parole chiave. Non sono molto informato su tutto questo ma le domande sono troppe quindi chi ne sà più di me potrebbe spiegarmelo perfavore? perche le cose sono tante e voglio impararle nel minor tempo possibile.
grazie in anticipo
Dimentica il "minor tempo possibile". L'informatica e' un settore vastissimo e richiede grandi sforzi intellettivi e di tempo.
Detto questo, stai chiedendo 3 cose.
1) I linguaggi permettono di realizzare programmi per qualsiasi architettura hardware? I linguaggi di programmazione Turing completi permettono di esprimere tutte le azioni necessarie ad implementare ogni tipo di possibile algoritmo. Tuttavia il linguaggio da solo non va da nessuna parte, in quanto ogni hardware fa girare almeno un sistema operativo ( o qualcosa di molto simile ), librerie per la gestione dell'hardware, grafica, ecc... Il linguaggio deve pertanto potersi interfacciare con questi componenti software di basso livello. Ogni linguaggio ha una serie di architetture hardware/software supportate. Chi ne ha di piu', chi ne ha di meno.
2) Le schede grafiche, come ogni altro componente hardware, sono dei computer in miniatura, con i loro processori, ognuno dei quali ha un proprio Set d'Istruzioni ( ISA ) e modello di programmazione. Per cui i comandi che t'inventi tu vanno mappati in una sequenza di comandi implementati dall'hardware. Questo e' quello che s'intende per programmare. Questo modello e' applicabile anche ai linguaggi di programmazione, tant'e' che quelle che chiami "parole chiave" vengono convertite da un compilatore/interprete in una sequenza d'istruzioni macchina comprensibili dal processore su cui dovra' girare il problema.
3) La programmazione diretta di una qualsiasi componente hardware e' possibile solo se il tuo codice gira in modalita' supervisore ( ring 0 nel gergo x86 ). I sistemi operativi moderni non ti permettono di far girare il tuo programma a ring 0, a meno che tu non crei un driver. Detto cio' una libreria grafica non e' un driver, non gira a ring 0 e non pretende di parlare direttamente con la gpu. Direct3D, OpenGL, Vulkan, Metal, ecc... non fanno altro che implementare un modello di programmazione astratto, che consente di realizzare sequenze di comandi, poi convertite in sequenze di istruzioni per la gpu ( nel suo linguaggio macchina ).
Il succo del discorso e' che i linguaggi di programmazione non c'entrano un tubo con le librerie grafiche, ma in genere si usano C e C++ per realizzarle perche' consentono di ottenere performance elevate e implementano l'aritmetica dei puntatori ( utile in questo tipo di software ).
Comunque noto parecchia confusione riguardo le basi dell'elettronica dei calcolatori. Ti consiglio di studiarti un po' di architettura dei calcolatori ( ci sono ottimi libri ) altrimenti non capirai mai com'e' organizzato lo stack software alla base dei moderni sistemi di computing.