OpenGL: come verificare se l’utente supporta glGenBuffers ()?

Ho controllato i documenti, e dice che la versione OpenGL deve essere almeno 1.5 per far funzionare glGenBuffers() . L’utente ha la versione 1.5 ma la chiamata di funzione causerà un arresto anomalo. Si tratta di un errore nei documenti o di un problema di driver per l’utente?

Sto usando questo glGenBuffers() per VBO, come glGenBuffers() controllare se l’utente ha il supporto per questo?

Modifica: im usando glew con glewInit() per inizializzare VBO

Edit2: Ho capito che funziona sull’utente con le chiamate alla funzione glGenBuffersARB() . Ma sto ancora cercando un modo per scoprire quando dovrei usare glGenBuffers() e quando dovrei usare glGenBuffersARB() E quando dovrei usare VertexArrays se nessuna delle chiamate alla funzione VBO è supportata.

Ho anche scoperto che if(GLEW_VERSION_1_5) restituisce false all’utente, ma GL_VERSION restituisce 1.5.0, il che non ha alcun senso!

Ora ti dirò di stare lontano da GLEW o da una di queste librerie soprattutto perché sono inutili, è così che l’ho sempre fatto.

 #ifndef STRINGIFY #define STRINGIFY(x) #x #endif #ifdef WIN32 #include  #define glGetProcAddress(a) wglGetProcAddress(a) #endif #ifdef X11 #define glGetProcAddress(a) glXGetProcAddress ( \ reinterpret_cast(a) \ ) #endif #ifndef GetExtension #define GetExtension(Type, ExtenName) \ ExtenName = (Type) \ glGetProcAddress(STRINGIFY(ExtenName)); \ if(!ExtenName) \ { \ std:cout << "Your Computer Does Not " \ << "Support GL Extension: " \ << STRINGIFY(ExtenName) \ << std::endl; \ exit(1); \ } \ else \ { \ std::cout << "Loadded Extension: " \ << STRINGIFY(ExtenName) \ << std::endl; \ } #endif // then just use this :D GetExtension(PFNGLGENBUFFERSARBPROC, glGenBuffersARB) // after your done you can do this #undef GetExtension #undef glGetProcAddress // you can then also undef the STRINGIFY macro // though it does come in handy. 

Controlla questo link . Forse ti aiuterà;)

 if (GLEW_VERSION_1_5) { /* You have OpenGL 1.5 */ } 

Prova glGenBuffersARB insted glGenBuffers; Penso che devi solo controllare il supporto 1.5;