Вопрос

Кто-нибудь знает, как создать текстуру с цветовым пространством YUV, чтобы мы могли получить аппаратное преобразование YUV в цветовое пространство RGB без необходимости использования фрагментарного шейдера?Я использую NVidia 9400, и я не вижу очевидного расширения GL, которое, кажется, делает свое дело.Я нашел примеры использования фрагментарного шейдера, но проект, над которым я работаю в настоящее время, поддерживает только OpenGL 1.1, и у меня нет времени конвертировать его в 2.0 и выполнять все необходимое регрессионное тестирование.Это также нацелено на Linux.На других платформах я использовал расширение MESA, но оно не работает на карте Nvidia.

Это было полезно?

Решение

Поскольку вас устраивает использование расширений, но вы беспокоитесь о том, чтобы полностью использовать OpenGL 2.0, рассмотрите возможность предоставления простого фрагментного шейдера старой школы Arb_fragment_программа расширение.

В качестве альтернативы вы могли бы использовать библиотеки, такие как DevIL, ImageMagick или FreeImage, чтобы выполнить преобразование за вас.

Другие советы

расширение MESA, о котором вы упомянули, предназначено для YCrCb? Если ваша карта nvidia не предоставляет ее, это означает, что они не предоставили поддержку этого формата текстуры (это способ сказать, что карта поддерживает это).

Единственный вариант - преобразовать цвета вне блока фильтрации текстур. (до отправки данных текстуры в GL или после получения значений из блока фильтрации текстуры)

GL все еще может помочь, так как выполнение линейного преобразования выполнимо в GL1.1, если у вас есть правильные расширения (расширение объединителя текстур dot3). Тем не менее, это далеко от панацеи.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top