У меня есть кроссплатформенный проект QT 6.8.1. Он отлично работает на Windows и Ubuntu 22.04, как с X11, так и с Wayland. По умолчанию он использует рендерер OpenGL. Но мне нужен рендеринг Vulkan, и поэтому добавьте следующую строку кода в начале файла main.cpp:
QQuickWindow::setGraphicsApi(QSGRendererInterface::Vulkan);
После этого приложение продолжает нормально работать на Windows и Ubuntu 22.04 с X11, но с Wayland все мои окна приложения отсутствуют заголовок окна и границы. Так что они вообще не украшены. Как можно исправить такое поведение? Я нашел одно возможное исправление. Я не думаю, что это правильное решение, так как оно запускает приложение через дополнительный уровень совместимости Xwayland, который может повредить производительности, если я понимаю это правильно. В начале функции main () я добавил это: < /p>
// Set Vulkan renderer
QQuickWindow::setGraphicsApi(QSGRendererInterface::Vulkan);
// Fix missing window header & borders on Linux Wayland
#ifdef OS_LINUX
if (qgetenv("XDG_SESSION_TYPE") == "wayland") {
qDebug("Force Wayland to use XCB");
qputenv("QT_QPA_PLATFORM", "xcb");
}
#endif
Подробнее здесь: https://stackoverflow.com/questions/795 ... an-and-vul