Ленивый рендеринг Qt в OpenGL

я столкнулся с этой проблемой и знал, что ее можно решить лучше.

Проблема:

При наложении QGLWidget (контекстного представления Qt OpenGL )на виджеты Qt, Qt перерисовывает эти виджеты после каждого кадра Qt.

Qt не предназначен для постоянной перерисовки целых окон со скоростью >60 кадров в секунду, так что это очень медленно.

Моя идея:

Заставьте Qt использовать что-то другое для рисования :прозрачной текстуры. Заставьте OpenGL использовать эту текстуру всякий раз, когда он перерисовывает и рисует ее поверх всего остального. Заставьте Qt перенаправлять все взаимодействия с контекстным представлением OpenGL на виджеты, нарисованные на текстуре.

Преимущество заключается в том, что Qt должен перерисовывать только всякий раз, когда это необходимо (, например. виджет наводится или щелкается, или текстовый курсор в текстовом поле мигает ), и может выполнять частичную перерисовку, что происходит быстрее.

Мой вопрос:

Как к этому подступиться? как я могу сказать Qt рисовать текстуру? как я могу перенаправить взаимодействие с виджетом на другой (, например. если я наведу указатель мыши на область в контекстном представлении, где флажок находится в нарисованном текстурном виджете -–-, Qt должен зарегистрировать это событие для флажка и перерисовать, чтобы отразить его наведенное состояние)

7
задан flying sheep 7 August 2012 в 15:18
поделиться