Программы построения теней OpenGL v2.0 с Dev-C++ и SDL?

Вы можете использовать функцию 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))
7
задан zyndor 19 June 2009 в 18:20
поделиться

2 ответа

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 .

8
ответ дан 7 December 2019 в 05:27
поделиться

Можете ли вы загрузить адреса функций во время выполнения?

typedef GLhandle (APIENTRYP PFNGLCREATESHADERPROC) (GLenum shaderType);
PFNGLCREATESHADERPROC glCreateShader = NULL;
glCreateShader = (PFNGLCREATESHADERPROC)wglGetProcAddress("glCreateShader");

typedef GLhandle (APIENTRYP PFNGLCREATEPROGRAMPROC) ();
PFNGLCREATEPROGRAMPROC glCreateProgram = NULL;
glCreateProgram = (PFNGLCREATEPROGRAMPROC)wglGetProcAddress("glCreateProgram");
0
ответ дан 7 December 2019 в 05:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: