2014-04-21 8 views
5

OpenGL è un'interfaccia per eseguire comandi grafici. Ora, se la libreria è multipiattaforma, in che modo interagisce con la GPU, effettua chiamate di sistema e quindi la rende multipiattaforma o utilizza i driver per eseguire le sue operazioni?In che modo OpenGL comunica con la GPU?

risposta

10

OpenGL viene in genere implementato come parte dei driver di grafica . Ogni implementazione userà interfacce specifiche per l'implementazione per parlare con alcuni componenti dello spazio del kernel e il vero HW.

Si può vedere un po 'di più come queste cose potrebbero essere fatte guardando l'implementazione GL open source basata su MESA su Linux. In realtà usano l'API DRM (gestore di rendering diretto) del kernel Linux per parlare con l'HW. L'attuale implementazione di MESA è organizzata in modo tale che per ogni GPU, ci sia un driver del kernel drm e un client DRI nello spazio utente. Mesa ora utilizza l'API gallium come livello di astrazione per mantenere piccolo il codice specifc GPU e renderlo più portabile. L'API OpenGL è implementata come "tracker di stato" ed è indipendente dai driver della GPU. (C'è stato anche un D3D10/11 state tracker, ma era più simile a un test e successivamente rimosso perché non mantenuto).

il fatto che OpenGL è definito come un API plaform-indipendente non significa che la libreria OpenGL sarà indipendente dalla piattaforma a tutti. Questa è la stessa situazione con la libreria API C è parte della lingua standard, ma l'implementazione è molto specifica per la piattaforma

+0

L'ultimo paragrafo dice molto, grazie per questo mi sono sempre chiesto come una libreria indipendente dalla piattaforma possa anche dipendere dal sistema. ank te molto. Ti voterei ma non posso ancora. – boompow