Внезапно понадобилось сделать рендеринг видео на OpenGL в одном Qt-приложении. Я абсолютно не в теме, в связи с чем возникли следующие вопросы:
* Какой тип текстуры для кадра выбрать, чтобы не заморачиваться с ограничениями типа «размеры текстуры должны быть степенью двойки» и при этом код работал на большинстве платформ с разными версиями OpenGL?
* Какие проблемы с GT_TEXTURE_RECTANGLE, который вроде бы работает «везде» и не имеет указанного выше ограничения?
* QGLContext::bindTexture(), судя по коду, проверяет в рантайме версию OpenGL и поддерживаемые расширения и берет на себя проблему с размерами текстур, но при этом кэширует текстуры на основе QImage::cacheKey(), что бесполезно для видеокадров, а также, судя по всему, не предоставляет возможности обновить уже созданную текстуру. Нормально ли удалять предыдущую текстуру (QGLContext::deleteTexture()) и создавать новую для каждого следующего кадра?
* Когда используются QPainter::begin/endNativePainting()?
Если это имеет значение, то поток видео приходит покадровым образом в 32-битном RGB-формате.
Спасибо.