Я пытаюсь построить и запустить приложение OpenGL на основе QT на моем настольном компьютере Linux. Машина управляет атомным дистрибутом баззита, поэтому мне пришлось создать среду разработки в Distobox, которая является Ubuntu 24.04.2 LTS. 120 .
Я подозреваю, что это из -за используемой версии OpenGL, о которой сообщается GlgetString (GL_Version) как OpenGL ES 3.2 nvidia 580.76.05 . Это удивительно, поскольку я понимаю, что OpenGL ES предназначен для встроенных устройств с ограниченным ресурсом, поэтому не нужно на своем рабочем столе с полным выделенным графическим процессором. QT_OPENGL = Desktop в среде, но ни одна из этих работ, и я все еще получаю OpenGL ES. Это, в сочетании с этим ответом, заставляет меня поверить, что QT вообще не обнаруживает поддерживаемую настольную версию OpenGL. glewissupported ("gl_version_3_0") и glewissupported ("gl_version_4_0") все возвращают true. У меня также есть еще одно приложение OpenGL без QT, которое может хорошо работать в контейнере DistorBox, и это возвращает версию OpenGL 4.6.0. < /P>
Я остаюсь очень запутанным. Есть ли причина, по которой QT не может использовать основной профиль OpenGL? Этот проект очень большой и не мой, поэтому я не знаю обо всех местах, где можно запускать код QT, связанный с OpenGL.int main(int argc, char* argv[])
{
QSurfaceFormat format;
format.setDepthBufferSize(24);
format.setSamples(4);
QSurfaceFormat::setDefaultFormat(format);
// This is where I added the Qt::AA_UseDesktopOpenGL
// attribute when testing. It did not help.
QApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
// Disable Qt OpenGL buglist; since we require desktop OpenGL 2.1 there's no point in
// having Qt disable it (also we've had reports of some Intel drivers being blocked that
// actually work with TB.)
qputenv("QT_OPENGL_BUGLIST", ":/opengl_buglist.json");
}
< /code>
static void initializeGlew()
{
glewExperimental = GL_TRUE;
if (const auto glewState = glewInit(); glewState != GLEW_OK && glewState != GLEW_ERROR_NO_GLX_DISPLAY)
{
throw RenderException{fmt::format(
"Error initializing glew: {}",
reinterpret_cast(glewGetErrorString(glewState)))};
}
}
bool GLContextManager::initialize()
{
if (!m_initialized)
{
m_initialized = true;
initializeGlew();
GLVendor = reinterpret_cast(glGetString(GL_VENDOR));
GLRenderer = reinterpret_cast(glGetString(GL_RENDERER));
GLVersion = reinterpret_cast(glGetString(GL_VERSION));
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... nstead-why
QT игнорирует запрос на Desktop OpenGL на Linux, использует вместо этого OpenGL ES. Почему? [закрыто] ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Система анимации в OpenGL не меняет позу модели, а вместо этого деформирует объект.
Anonymous » » в форуме C++ - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Система анимации в OpenGL не меняет позу модели, а вместо этого деформирует объект.
Anonymous » » в форуме C++ - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-