Pergunta

Alguém sabe como criar uma textura com um espaço de cor YUV para que possamos obter YUV baseada em hardware para conversão de espaço de cor RGB, sem ter que usar um sombreador fragmento? Eu estou usando um NVidia 9400 e não vejo uma extensão GL óbvio que parece fazer o truque. Eu encontrei exemplos como usar um shader de fragmento, mas o projeto que estou trabalhando atualmente suporta apenas o OpenGL 1.1 e eu não tenho tempo para convertê-lo para 2,0 e realizar testes necessários toda a regressão. Isso também é alvo Linux. Em outras plataformas Estive usando uma extensão de MESA mas não funciona no cartão Nvidia.

Foi útil?

Solução

Uma vez que você está bem com o uso de extensões, mas você está preocupado em ir all-out com OpenGL 2.0, considere fornecer um shader de fragmento simples com o old-school ARB_fragment_program extensão.

Como alternativa, você poderia usar uma biblioteca como diabo, ImageMagick, ou FreeImage para realizar a conversão para você.

Outras dicas

a extensão MESA você menciona é para YCrCb? Se a sua placa nvidia não expô-lo, isso significa que eles não expor o suporte para esse formato de textura (é o maneira de dizer os apoios de cartão de TI).

Sua única opção é fazer o exterior conversão de cores do bloco de filtragem de texturas. (Antes de apresentar os dados de textura para GL, ou depois de obter os valores para fora do bloco de filtragem de texturas)

GL ainda pode ajudar, como fazer transformar o linear é factível em GL1.1, desde que você tenha as extensões de direito (dot3 textura combinador de extensão). Dito isto, está longe de ser a panaceia.

Por que vale a pena, o implementação BINK parece que ele está fazendo a conversão com a CPU , usando MMX (que está nas entrelinhas embora). Eu provavelmente faria o mesmo, convertendo com SSE antes do carregamento para OpenGL. A CPU é rápido o suficiente para fazer isso a cada quadro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top