Вы можете использовать функцию max
.
Справка по встроенной функции max в модуле __builtin __:
max (...)
max (iterable [, key = func]) -> value
max (a, b, c, ... [, key = func]) -> value
С одним итеративным аргументом вернуть его наибольший элемент. С двумя или более аргументами верните самый большой аргумент.
max_item = max(a_list, key=operator.itemgetter(1))
gl.h предназначен только для OpenGL 1.1 (а в некоторых случаях до 1.3 в зависимости от того, какую версию файла вы используете и какую операционную систему). Для всего остального вам дополнительно понадобится glext.h и, возможно, glxext.h (Linux / Unix) или wglext.h (Windows).
Все функции из более новых версий OpenGL должны быть связаны во время выполнения. Итак, чтобы использовать их, вы должны получить правильный адрес функции и назначить его указателю функции. Самый простой способ сделать это - использовать что-то вроде GLEW .
Ручной способ будет примерно таким:
PFNGLCREATESHADERPROC glCreateShader = NULL;
glCreateShader = (PFNGLCREATESHADERPROC) wglGetProcAddress("glCreateShader");
или для Linux:
PFNGLCREATESHADERPROC glCreateShader = NULL;
glCreateShader = (PFNGLCREATESHADERPROC) glXGetProcAddress((GLubyte*) "glCreateShader");
Если вы определите GL_GLEXT_PROTOTYPES перед включением glext.h вы можете опустить первую строку.
РЕДАКТИРОВАТЬ: SDL_opengl.h выглядит так, как будто он содержит копию glext.h (хотя и не обновленную). Поэтому, если вы используете это, все вышеизложенное должно оставаться в силе. Если вы хотите использовать отдельный файл glext.h, вы должны определить NO_SDL_GLEXT перед включением SDL_opengl.h. Кроме того, прототипы функций недоступны, пока GL_GLEXT_PROTOTYPES не определен или вы пишете их самостоятельно.
EDIT2: Очевидно SDL имеет свою собственную функцию GetProcAddress под названием SDL_GL_GetProcAddress .
Можете ли вы загрузить адреса функций во время выполнения?
typedef GLhandle (APIENTRYP PFNGLCREATESHADERPROC) (GLenum shaderType);
PFNGLCREATESHADERPROC glCreateShader = NULL;
glCreateShader = (PFNGLCREATESHADERPROC)wglGetProcAddress("glCreateShader");
typedef GLhandle (APIENTRYP PFNGLCREATEPROGRAMPROC) ();
PFNGLCREATEPROGRAMPROC glCreateProgram = NULL;
glCreateProgram = (PFNGLCREATEPROGRAMPROC)wglGetProcAddress("glCreateProgram");