Краткое описание:
У меня есть массив из 24-битных значений. Любое предложение о том, как быстро расширить отдельные 24-битные элементы массива в 32-битные элементы?
Детали:
Я обрабатываю входящие видеофрагменты в реальном времени, используя пиксельные шейдеры в DirectX 10. Блокирование камней состоит в том, что мои кадры поступают с захватного оборудования с 24-битными пикселями (либо как изображения YUV, либо RGB), но DX10 принимает 32-битные пиксельные текстуры. Таким образом, я должен расширить 24-битные значения до 32 бит, прежде чем я смогу загрузить их в графический процессор.
Мне действительно все равно, что я установил оставшиеся 8 бит или где входящие 24-биты находятся в этом 32-битном значении - я могу исправить все это в пиксельном шейдере. Но мне нужно сделать преобразование с 24-бит до 32-бит очень быстро.
Я не очень хорошо знаком с SIMD SSE-операциями, но из моего беглого взгляда не похоже, что я могу сделать расширение, используя их, учитывая, что мои чтения и записи не имеют одинакового размера. Какие-либо предложения? Или я придерживаюсь последовательного массирования этого набора данных?
Это кажется настолько глупым - я использую пиксельные шейдеры для parallelism, но перед этим я должен выполнить последовательную операцию на пиксель. Я должен упустить что-то очевидное...