[C] Come gestire direttamente il video

di il
14 risposte

[C] Come gestire direttamente il video

Salve a tutti ragazzi recentemente mi sono avvicinato molto alla programmazione di basso livello
e come fa la programmazione più in basso si scende più si cerca di sapere. Studiando assembly ho scoperto che per la
gestione e la stampa su video esiste un area di memoria la dove scrivendo i valori di rgb le zone dello schermo assumono quei valori.
Ora vorrei creare una libreria grafica usando le relazioni matematiche del piano cartesiano il punto è che non trovo una guida che
mi insegna a gestire la grafica a bassissimo livello. Qualcuno di voi conosce qualche guida del genere
o potrebbe darmi delle dritte???
Mi affido a voi e grazie in anticipo

14 Risposte

  • Re: [C] Come gestire direttamente il video

    Parli di C/C++?

    Comunque, la gestione a basso livello delle schede grafiche moderne è abbastanza complessa e la lascerei ai driver appositi.
  • Re: [C] Come gestire direttamente il video

    Parlo di c..... si vorrei lasciare tutto al driver per ora pero senza appoggiarmi su librerie per creare finestre come per esempio gtk vorrei imlementarne una mia e vorrei capire come a livello hardware interagire con lo schermo disegnando semplici punti attraverso coordinate
  • Re: [C] Come gestire direttamente il video

    No, un attimo. Non puoi interagire con l'hardware dal tuo programma C. Semmai puoi utilizzare le chiamate grafiche del sistema che utilizzi (quale?).
  • Re: [C] Come gestire direttamente il video

    Utilizzo Ubuntu 15.10. Se non erro essendo un sistema Unix based dovrei trattare lo schermo come se fosse un file. pero non trovo nessuna guida che mi permetta di trattare lo schermo come un piano cartesiano o meglio a livello molto basso per poter creare delle librerie tutte mie. Cioè non so se sono stato molto chiaro ma il mio scopo è arrivare molto in basso senza appoggiarmi a librerie esterne per poter imparare a programmare abbastanza bene e in modo autonomo. tu potresti consigliarmi qualcosa???
  • Re: [C] Come gestire direttamente il video

    No .. per interagire con la scheda video (e dipende dalle varie schede video ...) devi accedere ai registri del processore video e di tanta altra roba sulla scheda e non credo proprio tu possa farlo senza tante, tante info specifiche. Ciò che accede al video è il "driver" rilasciato con la scheda video e solo quello ti può eventualmente fornire un accesso specifico a specifiche funzionalità.

    Probabilmente puoi provare con il device framebuffer /dev/fb0 ma non ho provato, tanto meno con Ubuntu e penso comunque che funzioni solo con la console.
  • Re: [C] Come gestire direttamente il video

    Scusa l'insistenza e quindi il c non ha proprio nessuna funzione scritta nelle librerie standard per farmi disegnare a schermo come che ne so in java posso fare sui canvas??
  • Re: [C] Come gestire direttamente il video

    No, nelle librerie standard no. Ma se il tuo obiettivo è disegnare, usa una libreria tra queste (esempio)

    libsdl
    Allegro
    OpenGL
    ...
  • Re: [C] Come gestire direttamente il video

    Ok grazie... scusa se sono insistenze e in assembly non ci sarebbe proprio nulla??
  • Re: [C] Come gestire direttamente il video

    Ancora peggio ...
  • Re: [C] Come gestire direttamente il video

    Vabene grazie quindi per farla breve per poter imparare queste cose devo aspettare l'universita??
  • Re: [C] Come gestire direttamente il video

    Se intendi come accedere all'hardware di Linux, beh, non ne sono sicuro ma te lo auguro.

    Per le librerie, non c'è bisogno dell'università, puoi fare da solo.
  • Re: [C] Come gestire direttamente il video

    Ok grazie mille mi sei stato molto di aiuto. Buona programmazione
  • Re: [C] Come gestire direttamente il video

    No, non ti serve aspettare l'universita!

    Invece, quello che devi fare, e' interfacciarti, in ASSEMBLER, alle API del sistema operativo (in questo caso Windows, ma ci sono per Linux e Mac e qualunque altro S.O ).

    Per le API di Windows, hai MSDN (2d, e le DirectX per il 3D). In alternativa, le OpenGL per la grafica 3D.


    https://www.opengl.org

    Tutte le altre librerie, (Allegro, ... ed anche OpenGL) non fanno altro che ridirigere le chiamate al SO, il quale le ridirige al driver della cheda, la quale, a sua volta, accede all'hardware.

    Accedere alla scheda grafica e' un bagno di sange: una volta avevi la modalita' testo 80x24 e 16 colori, al limite 720x340 in bianco e nero (o in verde, se usavi il monito a fosfori verdi, vedi Herculess, CGA, EGA, magari la famosa VGA pria edizione), e comunque dovevi accedere alle porte di IO della scheda.

    Poi c'era lo standard VESA, con cui potevi accedere a qualunque scheda grafica, indipendentemente dal produttore.

    https://en.wikipedia.org/wiki/VES

    Oggi le schede hanno 2/4GB di ram, accelerazione grafica, ... n-mila thread hardware! Sono decisamente complesse da comandare.
  • Re: [C] Come gestire direttamente il video

    Grazie millee per quanto riguarda ubuntu e gli altri sistemi unix based quali sono le api alle quale devo interfacciami (scusa l'ignoranza)
Devi accedere o registrarti per scrivere nel forum
14 risposte