DOMANDA Come si può creare una libreria grafica e info su linguaggi

olegfresi

Nuovo Utente
102
2
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
 
M

Mursey

Ospite
Non puoi spiegare alla scheda video comandi inventati da te.
Puoi creare una tua libreria grafica che si basa su librerie gia' esistenti e supportate dalla scheda video.

Un programma puro C potrebbe teoricamente girare su diversi sistemi ma in generale va ricompilato per la piattaforma dove lo si vuole usare.


Come ti e' stato gia' detto molte volte, prima impara a programmare bene; non pensare a fare librerie degne di DirectX o motori degni del CryEngine perche' ci vogliono interi team di ingegneri super esperti e non certo persone che hanno chiesto due dritte su un forum. :)
 

olegfresi

Nuovo Utente
102
2
Scusa un attimo, ma se io posso solo basarmi su una libreria già esistente colui che ha creato la prima in assoluto da dove ha preso i dati e su cosa si è basato dato che prima non poteva esserci nessuna libreria e nessun driver video
 
M

Mursey

Ospite
Scusa un attimo, ma se io posso solo basarmi su una libreria già esistente colui che ha creato la prima in assoluto da dove ha preso i dati e su cosa si è basato dato che prima non poteva esserci nessuna libreria e nessun driver video

La scheda video sara' esistita no ?
O un processore video se parliamo di computer molto vecchi.

Quel hardware e' capace di elaborare istruzioni e quindi vanno seguite delle regole.
Sono regole diciamo "di base", parlo in maniera semplice, perche' poi nel tempo gli sviluppatori hanno costruito motori grafici sempre piu' evoluti sfruttando al meglio queste basi.

Ma una libreria DirectX12 esiste se c'e' hardware dove puo' girare, altrimenti andrebbe ancora bene una Matrox G400.
 

DJCris

Utente Attivo
107
11
CPU
aasasasasa
Scheda Madre
asasasas
HDD
asasasasasasas
RAM
asaasasa
GPU
asassasa
Audio
asasaas asasa
Monitor
asasaasas
PSU
asasasasas
Case
asasasasas
OS
asasasasa
Comunque ciò che chiedi nella tua domanda è molto tenera a mio avviso. Creare una libreria degna di DirectX impiega anni, generazioni di schede grafiche e decine di programmatori esperti. Rispondendo direttamente alla tua domanda, "dire" direttamente alla scheda grafica cosa fare, senza passare per una libreria compatibile con il processore grafico, non è praticamente possibile essendo che l'hardware è stato fatto per potersi interfacciare in primis con un determinato software (chiamati driver e li crea la casa madre della scheda grafica, es: nvidia per le sue geforce e amd per le sue radeon). Renditi conto che una scheda grafica è un pezzo di elettronica veramente complicato. Dovresti prima imparare come funziona un processore normale a pochi bit e poi passare al funzionamento di un processore grafico, e questo impiega oltre a conoscenze di informatica anche conoscenze di elettronica (sai cos'è almeno una porta logica?), oltre a impegno e tempo materiale. Alla fine, POI forse avresti un'idea di come il software interagisce con l'hardware.

Ah comunque guarda qui magari vieni ispirato: https://www.khronos.org/vulkan/
 
Ultima modifica:
  • Mi piace
Reazioni: Mursey

pabloski

Utente Èlite
2,868
916
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.
 
  • Mi piace
Reazioni: Mursey

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!