QNA > C > Cosa Intende La Gente Quando Dice Che 'Opengl È Una Specifica'?

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.

Di Borchert

Quanti figli ebbe il re Salomone? :: Cosa dovrei imparare per lo sviluppo di giochi, DirectX o OpenGL?
Link utili