C# - canal aplha de imagens RGB?

Programação C em geral

Moderadores: 51, guest2003

C# - canal aplha de imagens RGB?

Mensagempor chipselect » 07 Mai 2011 00:25

estou usando DirectShow.NET para pegar os frames de um vídeo que vem em RGB (24 bits) e aplicar como textura em um objeto 3D usando OpenGL.

Até ai tudo ia a mil maravilhas, até que um indivíduo pediu transparência.

Escolhi uma cor então como sendo transparência, e varro a imagem, pixel por pixel, copiando os valores R, G e B para um novo vetor prealocado que comporta os canais R, G, B e A, onde o A eu calculo a partir dos R, G e B. Sei que é um modo burro de fazer, mas sinceramente não sei trabalhar com o tal do DOT NET, sei C/C++ e java, mas me passaram o projeto começado com C#, daí tô fazendo nele.

Isso tudo não seria problema se eu não tivesse usando C# com SampleGrabber do DirectShow e a operação de cópia e cálculo do vetor com Alpha não fosse tão lerdo. Está funcionando, mas preciso otimizar.

Acho que não dá pra usar Buffer.BlockCopy porque copia blocos inteiros pois eu preciso inserir o tal do alpha. Isso valeria também pra Marshal.copy... estou errado?

Fazer em C++ a essa altura... se eu tivesse tempo daria, mas não vou ter.

Já tô usando threads para otimizar isso, mas tá comendo a cpu inteira...

Pensei em usar Emgu/OpenCV pra fazer isso pois já tô usando ele noutra parte do software, mas pelo que vi, o Emgu fica instanciando imagens com o seu equivalente do cvcopy, isso não resolveria....

Passar tudo pro escopo estático e otimizar não dá pois a alocação do player de textura é dinâmico e depende do objeto 3D que eu desenho na tela.

Alguém tem alguma sugestão?
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Mensagempor vtrx » 07 Mai 2011 16:49

Não programo em C#,mas sei que a melhor maneira de voce trabalhar com esse efeito é usando DirectX(Alpha blending ),não costumo usar DirectShow(que acho que ja foi removido como nativo do directx).
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01


Voltar para Visual C++/C/C++/C#

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x