Среда:
- PySide6 (проверено с версиями 6.5/6.6)
- Python 3.x
- ОС: Linux/Windows (происходит в нескольких системах)
- Драйверы графического процессора: стандартные системные драйверы
Код: Выделить всё
import sys
from PySide6.QtWidgets import (
QApplication, QMainWindow, QWidget, QVBoxLayout
)
from PySide6.QtOpenGLWidgets import QOpenGLWidget
from PySide6.QtGui import QSurfaceFormat
from PySide6.QtCore import Qt
class GLWidget(QOpenGLWidget):
def initializeGL(self):
pass
def resizeGL(self, w, h):
pass
def paintGL(self):
pass
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
central = QWidget()
layout = QVBoxLayout(central)
self.gl = GLWidget()
layout.addWidget(self.gl)
self.setCentralWidget(central)
self.resize(800, 600)
if __name__ == "__main__":
app = QApplication(sys.argv)
# Explicit OpenGL format
fmt = QSurfaceFormat()
fmt.setRenderableType(QSurfaceFormat.OpenGL)
fmt.setProfile(QSurfaceFormat.CoreProfile)
fmt.setVersion(3, 3)
fmt.setSwapBehavior(QSurfaceFormat.DoubleBuffer)
QSurfaceFormat.setDefaultFormat(fmt)
w = MainWindow()
w.show()
sys.exit(app.exec())
- QMainWindow
- Центральный QWidget с QVBoxLayout
- Один QOpenGLWidget
- Нет таймеров
- Нет рисования OpenGL вообще
Что я пробовал:
- Явный QSurfaceFormat с двойной буферизацией
- Основной профиль OpenGL
- Отключение обновлений
- Без перерисовки()/вызывает
Код: Выделить всё
update()
Известна ли это проблема с привязками QOpenGLWidget, PySide6 или некоторыми оконными системами (X11/Wayland/Windows)?
Будем признательны за любые рекомендации или минимальную рабочую конфигурацию.
Подробнее здесь: https://stackoverflow.com/questions/798 ... e-a-layout
Мобильная версия