DOMANDA Come funzionano le api di un motore grafico

olegfresi

Nuovo Utente
102
2
Vorrei porre agli utenti più attivi e professionali di questo forum una domanda che riguarda software come motori grafici o altri programmi di sviluppo riguardo alla application programming interface(API). Un esempio molto semplice è il motore di gioco unity: se io voglio far fare una determinata azione al mio personaggio entro nella documentazione online del sito di Unity è da lì entro nella sezione scripting api dove sono specificati tutti i codici con le rispettive funzioni da usare per fare delle determinate cose nel mio gioco. quando vado a programmare il gioco e poi vado a compilare il programma capisce cosa ho scritto perché ho usato appunto quelle parole chiave della libreria API di Unity. La mia domanda è ma gli sviluppatori come hanno fatto a creare quei codici a loro piacimento e a far capire al motore il loro significato e cosa doveva succedere una volta che il programmatore ha scritto e compilato il codice. Spero di essermi spiegato bene se non avete ben capito cosa volevo chiedervi scrivetemelo qua sotto e io cercherò di essere più preciso.

Grazie in anticipo
 
Ultima modifica:

olegfresi

Nuovo Utente
102
2
Grazie di avermi passato quesa tesi per capirci meglio ma quello che ho chiesto in questo post qui non è stato spiegato. Nessuno che sappia rispondermi brevemente giusto per farmi capire anche in poche righe? In sintesi vorrei sapere come fanno dei codici di una libreria API a essere interpretati dal compilatore e di conseguenza tradotti in binario.
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,946
11,581
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Nessuno che sappia rispondermi brevemente giusto per farmi capire anche in poche righe? In sintesi vorrei sapere come fanno dei codici di una libreria API a essere interpretati dal compilatore e di conseguenza tradotti in binario.
Perché questo è ciò che fa un compilatore per definizione:
traduce in binario (secondo il codice macchina ed il sistema operativo su cui gira il compilatore) quello che il programmatore codifica.
Il compilatore non interpreta, TRADUCE LE ISTRUZIONI a basso livello.
 
  • Mi piace
Reazioni: Mursey
M

Mursey

Ospite
gli sviluppatori come hanno fatto a creare quei codici a loro piacimento e a far capire al motore il loro significato e cosa doveva succedere una volta che il programmatore ha scritto e compilato il codice.

Allora rispondo alla tua domanda originale :
Un motore e' sviluppato da un programmatore (in realta' da molti...) e quindi lui ha deciso come strutturarlo e che funzioni potranno agire su di esso.

Sa vogliamo parlare del Compilatore invece andiamo sulle basi della programmazione... https://it.wikipedia.org/wiki/Compilatore


Come procede il tuo percorso di studio ?
Su che linguaggio ti sei orientato ?
A che punto sei ?
 

olegfresi

Nuovo Utente
102
2
Vorrei iniziare a studiare il c++ ma comunque nella domanda volevo sapere come fanno i singoli codici inventati dagli sviluppatori del motore grafico a essere tradotti in linguaggio macchina e quindi a essere eseguiti. Faccio un esempio: voglio far camminare il mio personaggio sull'asse delle ascisse e invento un codice a caso: if( IpressButton"w"||"up")moveCharacterOnXAss e dunque una volta scritto il codice devo far capire al pc che quando viene premuto il tasto w o up allora il mio personaggio camminera nella scena sull'asse x. Come avviene questa procedura?
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
La grafica in sè è gestita dalla GPU.
Quelle a cui fai riferimento sono istruzioni che non vengono "inventate" dagli sviluppatori. Il codice macchina non viene inventato dai programmatori e non viene generato "per caso" da un motore grafico o da altro. Una volta scritto il codice il compilatore genera il codice macchina.
Nel caso dei giochi c'è di mezzo pure la grafica, ed è un mondo in cui evito di avventurarmi non conoscendolo bene. L'esempio che fai del movimento del personaggio segue comunque le solite regole. Il personaggio potrebbe essere - ipotizzo - un vettore (il personaggio in sè potrebbe essere modellato come un ellissoide magari). Quando premi un preciso tasto vengono modificate le coordinate che ne indicano la posizione.

Fai bene ad informarti, ma evita di fare il passo più lungo della gamba. Inizia a studiare C++, che sicuramente ti aprirà un mondo.
 

olegfresi

Nuovo Utente
102
2
Tu dici che non vengono inventate dai programmatori ma perchè allora in ogni motore grafico per l input per esempio ci sono comandi diversi. Poi gli sviluppatori come fanno capire al linguaggio macchina cosa devono svolgere questi comandi
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Non confondere il motore grafico con i comandi che riceve in input il gioco per muovere un personaggio. Penso siano totalmente configurabili (tant'è che di solito ogni gioco permette anche all'utente di cambiare i pulsanti predefiniti... e questo già da tantissimi anni).

La pressione di un tasto sulla tastiera provoca quella che viene definita "interruzione hardware" che - semplificando - interrompe la CPU tramite un segnale. La CPU a questo punto manda un segnale al solito chip (PIC 8259A, ora APIC, SAPIC) in risposta e riceve il numero dell'interruzione. Tramite questo numero - semplificando - viene poi identificata la procedura (chiamata ISR, Interrupt Service Routine) che gestisce questa interruzione. Nel caso dell'interruzione da parte della tastiera, avviene la lettura del codice di scansione. Questo codice identifica il tasto premuto. Il tutto semplificando molto... :P
La libreria grafica di un linguaggio di programmazione permette di ascoltare/ricevere gli eventi che avvengono sulla finestra, così come di conoscere i tasti premuti. Ergo la scelta del tasto per far muovere un giocatore o per qualsiasi altra azione è scelta da chi scrive il software.

Circa 3 mesi fa postai questo articolo. Prova a leggerlo, anche se penso sia decisamente ancora troppo avanzato: Il Linguaggio Macchina dell'8086.

Non ho capito la tua seconda frase... ma il linguaggio macchina dipende dall'architettura utilizzata. E' nel momento in cui il programma viene compilato che viene "portato" nella lingua parlata dalla CPU.
 
  • Mi piace
Reazioni: Mursey

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili