Sto scrivendo un programma che dipende da OpenGL 2.0 o versioni successive. Guardando le specifiche di GL 2.0 vedo che è stata promossa l'estensione definita in ARB_shader_objects che suppongo significhi che il prefisso ARB non sia più richiesto per GL versione 2.0 e successive e qualsiasi implementazione che supporta> GL2.0 avrà questo come parte di l'implementazione principale.Definizione di GL_GLEXT_PROTOTYPES rispetto all'ottenere puntatori di funzioni
Detto questo, quando compilo il mio programma gcc su Linux avverte: dichiarazione implicita di funzione. Un modo per ottenere queste funzioni è dichiararle nel programma stesso e quindi ottenere i puntatori di funzione tramite la funzione * GetProcAddress.
L'altro modo è definire GL_GLEXT_PROTOTYPES prima di includere glext.h che elude il problema di ottenere i puntatori di funzione per ciascuna delle funzioni che sono per impostazione predefinita ora presenti in GL2.0 o superiore. Qualcuno potrebbe suggerire se è consigliato e corretto? La linea di base è che il mio programma richiede OpenGL 2.0 o superiore e non voglio supportare niente di meno di GL2.0.
Nel caso qualcuno suggerisse di usare glee o glew, non voglio usare/avere l'opzione di usare le librerie glee o glew per ottenere lo stesso.
IIRC Vista e precedenti hanno migliorato * leggermente * la situazione esportando 1.4. – genpfault
@genpfault: no, non l'hanno fatto. Vista usa solo D3D invece di un sw rasterizer per il renderer di default 1.1, ma per il resto è sempre lo stesso. GL1.1 è semplicemente parte dell'API Win32 e non è mai stato aggiornato. – derhass
Cosa ne pensi di definire GL_EXT_PROTOTYPES e usare le funzioni senza fare GetProcAddress per tutti loro? Non è raccomandato? Se no, allora perché è parte delle intestazioni di glext? Inoltre, per le funzionalità di base, se è necessario fare sempre GetProcAddress, allora qual è lo scopo di farli promuovere come funzionalità principale? – Divick