[python] Могу ли я запустить GLU (OpenGL) на безголовом сервере?


1 Answers

Вы можете выполнять рендеринг за пределами экрана. Подробнее об этом здесь .

Это зависит от вашей графической карты и ОС. Если у вас есть старый графический чип, вы можете использовать библиотеку mesa OS (но вы получаете рендеринг программного обеспечения). Если он новее, вы можете использовать pbuffers.

Question

мы пытаемся использовать функции тесселяции GLU на безголовом сервере GNU / linux. Мы хотели бы использовать PyOpenGL для этого, но проблема в том, что он вылетает при вызове gluNewTess (ошибка сегментации)

gdb backtrace говорит, что это в glGetError, что заставляет меня думать, что для тестеляции GLU нужен контекст GL? Или это просто какая-то сложность в PyOpenGL?

Я попытался найти некоторую информацию о том, как инициализировать GL-контекст на безголовой (и виртуализированной) машине, не повезло. Любая информация по этим темам приветствуется.




GLU требует действительного контекста openGL, да (даже если можно было бы вызвать тесселятор только с контекстом).

Если у вас нет окна, это должно быть возможно, но сложно. См. Wiki opengl (и прочитайте его 3 раза, это довольно сложно).

Основная идея заключается в том, что вам нужно специальное расширение для создания вашего специального контекста без окон. Таким образом, вы должны вызвать wglGetExtensionsStringARB для получения этого расширения. Но, чтобы иметь возможность назвать это, у вас должен быть контекст в первую очередь! (да, это кошмар. У меня есть тот, кто создал этот апи). Поэтому создайте контекст обычным способом (и надейтесь, что он работает, даже если у вас нет экрана), получите расширение, вызовите wglCreateContextAttribsARB

Примечание: спецификация расширения говорит, что, When this extension is supported, calling wglCreateContext(hdc) is equivalent to calling wglCreateContextAttribs(hdc,0,NULL) , поэтому, возможно, вы могли бы сделать ставку вместе с простым созданием контекста.






Related