Я пытаюсь запустить приложение opengl на удаленном вычислительном кластере. Я использую osmesa, так как собираюсь выполнять программный рендеринг вне экрана (без пересылки x11 и т. д.). Я хочу использовать glew (чтобы облегчить жизнь, связанную с шейдерами и другими вызовами, связанными с расширениями), и, похоже, я создал и связал как mesa, так и glew.
Когда я вызываю mesa-create-context, glewinit выдает вывод OPENGL Version not available, что, вероятно, означает, что контекст не был создан. Когда я вызываю glGetString(GL_EXTENSIONS), я не получаю никакого вывода, что подтверждает это. Это также показывает, что glew отлично работает сам по себе. (Другие команды glew, такие как версия glew и т. д., также работают).
Теперь, когда я (как показано ниже) добавляю функцию mesa-make-context-current, glewinit вылетает с segfault. Запуск glGetString(GL_EXTENSIONS) теперь дает мне список расширений (что означает, что создание контекста прошло успешно!)
Я потратил часы, пытаясь понять это, пытался возиться, но ничего не работает. Был бы очень признателен за любую помощь в этом. Может быть, кто-то из вас уже сталкивался с чем-то подобным?? Еще раз спасибо!
int Height = 1; int Width = 1;
OSMesaContext ctx; void *buffer;
ctx = OSMesaCreateContext( OSMESA_RGBA, NULL );
buffer = malloc( Width * Height * 4 * sizeof(GLfloat) );
if (!OSMesaMakeCurrent( ctx, buffer, GL_UNSIGNED_BYTE, Width, Height )) {
printf("OSMesaMakeCurrent failed!\n");
return 0;
}
-- glewinit() crashes after this.
Добавлю, что osmesa и glew изначально не компилировались. Поскольку glew отменяет определение GLAPI в своей последней строке и поскольку osmesa больше не будет включать gl.h, GLAPI остается неопределенным и вызывает ошибку в osmesa.h (119). Я обошел это, добавив extern в GLAPI, но не уверен, что это актуально.
GLAPI
обычно представляет собой макрос, который определяет привязку библиотеки/соглашение о вызовах (например,__declspec (dllimport)
для привязки DLL), а не фактический символ, на который вы можете ссылаться. - person Andon M. Coleman   schedule 04.05.2014