Cosa intende la gente quando dice che 'OpenGL è una specifica'?
Sono uno sviluppatore di grafica di base e non scrivo spesso blog. Quindi potreste trovare la mia spiegazione un po' complicata, ma cercherò di renderla semplice. OpenGL è una specifica rilasciata dal gruppo Khronos. Ciò significa che specifica gli ingressi e le uscite di un'api o di una funzione, ma non dice come implementarla. Per esempio glDrawArrays - in questa pagina potete trovare quali sono gli input richiesti da questa funzione e quale output dovrebbe generare (in questo caso primitive di rendering), ma come questo rendering, dipende dal fornitore che sviluppa i driver grafici come Nvidia, intel ecc. L'implementazione di tutta o della maggior parte della funzione che vedete nella specifica, sarà presente nel driver grafico. Quindi se una nuova funzione viene aggiunta in una nuova versione delle specifiche opengl, allora i fornitori di grafica la implementano nei loro driver e vi viene chiesto di aggiornare i vostri driver grafici per trarre vantaggio dalle nuove funzionalità.
OpenGL non è un'API o una libreria, quindi non avete bisogno di aggiungere una lib o dll nel vostro progetto, per utilizzare le funzioni opengl. Avete solo bisogno di includere il file header, che è rilasciato dal gruppo Khronos e ottenere i puntatori alle funzioni. Se il vostro driver grafico supporta quella funzione (per esempio glDrawArrays), allora otterrete un puntatore a questa funzione, che potete usare nel vostro codice per renderizzare le primitive (come triangolo, linea ecc.).
State machine - significa che qualsiasi stato abbiate impostato, rimarrà in quello stato, finché non lo cambierete. Per esempio, se impostate il colore come rosso, allora tutte le primitive (linea/triangolo ecc.) che disegnerete dopo questo, saranno disegnate in rosso, finché non cambierete nuovamente il colore. Quindi, se volete disegnare una linea blu e rossa, dovete cambiare lo stato prima della chiamata al disegno. Questo concetto di cambiamento di colore non è applicabile alle moderne openGL. Ho preso l'esempio del colore solo per rendere le cose semplici.
Il contesto openGL è come un tavolo da disegno, dove si può disegnare qualcosa. Non è necessario che sia un monitor. È solo un contenitore, che contiene informazioni su come e cosa disegnare.
Articoli simili
- Quali sono le differenze tra le OpenGL moderne e quelle vecchie? L'OpenGL moderno è difficile, quindi dovrei iniziare con il vecchio OpenGL?
- Quando provo a connettermi a una rete WiFi su Android, come mai a volte dice 'connessione' ma all'improvviso smette di connettersi e dice 'salvato'?
- Come ottenere il reset della password sul mio Instagram se dice che non ci sono utenti trovati, ma dice che la mia email è in uso
- C'è un motore di gioco popolare o un motore grafico che usa Vulkan invece di DirectX o OpenGL? Cosa porta Vulkan al tavolo?