Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

yyajsayy

Transformação Pixel ->Rosa em alpha 0 [opengl]

Mensagens Recomendadas

yyajsayy

Boas Pessoal, estou aqui com uma pequena dúvida.

Estou a fazer um projecto em opengl, consiste num FPS, já tenho a estrutura toda, está tudo a funcionar impecavelmente.

Agora vamos passar à questão em causa, tenho uma arma, como podem verificar na imagem a baixo, mas a minha imagem carregada não tem canal alpha, é do tipo RAW.

Ok, no problem, agora queria perguntar a alguém se tem a ideia como poderei transformar os pixeis de uma determinada cor, por exemplo rosa choque em transparente.. (na imagem tenho branco mas não interessa)

O ideal seria quando crio a textura após carregar a imagem em memória fazer a transformação.

Se alguem estiver conhecimento sobre isso, dê aí uma dica :)

doom2e.th.jpg

Nos jogos do século passado utilizava-se um algoritmo do género, daí os sprites até virem com cor rosa.

Thanks :D


"If it don't work the first time, rename it to version 1.0."

http://seguranca-informatica.pt

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Triton

Basta alterares o alpha channel da imagem. Em princípio deves estar a fazer load da imagem como RGBA8 (1 byte por cada canal). Assim podes transformar a imagem em memória antes de enviares como textura para o OpenGL.

Mas o mais fácil é não usares uma cor específica como transparente e usar o alpha channel da maneira correcta. Editas a imagem com um editor normal (Photoshop, Paint.NET, GIMP, etc) e metes o alpha correspondente nesses pontos onde queres que a imagem seja transparente.

Depois de fazer load como RGBA no OpenGL, activas o blending. Podes ver aqui melhor como fazer: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=08


<3 life

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Metaluim

Isso de meter uma cor específica, fazia-se nos motores 2D dos jogos das consolas antigas, muitas não suportavam alpha blending (por software ou hardware). Com o advento do OpenGL/DirectX isso tornou-se irrelevante.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.