Entrar
Últimos assuntos
» Servidor de Discord do fórum?por Super Games Ontem à(s) 01:27
» Problemas com a caixa de diálogo, ela é pequena e as letras não cabem dentro
por Rukasu777 Qui 16 maio 2024, 18:10
» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03
» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08
» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18
» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
fontes, texto, blending e um efeito legal.
2 participantes
Página 1 de 1
fontes, texto, blending e um efeito legal.
Oi, moçada.
Estive lendo esse tópico do gifah e cismei de tentar fazer alguma coisa eu mesmo. Aí, no meio do caminho, a dúvida foi resolvida e eu fiquei com minha meia-engine pra brincar.
Então, até a coisa ser resolvida, eu estava num teste de como eliminar só uma área da surface, fazendo um buraco no lugar certo. Fiz, funcionou, beleza. Comecei a brincar com os blend modes. Queria desenhar um texto que sempre fosse visível, não importa o fundo sobre o qual ele está. Ou seja, um texto que sempre estivesse da cor oposta à cor do fundo.
Ora, euescrevi postei um tutorial sobre blending! Claro que eu sou capaz disso! Então vamos lá:
1 - muda o blend mode pra desenhar da cor inversa do fundo
2 - desenha o texto
3 - volta o blend mode ao normal
4 - corre pro abraço
Certo? Não. Primeiro, porque os blend modes são fatores multiplicativos, então se eu desenhar o texto em preto (tudo é zero), o texto sairá em preto (porque 0*0=0). Contornei isso desenhando em branco (tudo é 1, e 1*uma_coisa_qualquer=uma_coisa_qualquer).
Show, né? Olha como ficou o código:
Se eu elimino os blend modes, o texto aparece lá, em branco, bonitão. Então o que está errado?
PS: Consegui o efeito desejado colocando o texto numa surface e mudando o blend mode pra (bm_inv_dest_color, bm_inv_src_alpha), mas continuo com a dúvida: porque isso não funciona no caso de tentar desenhar o texto diretamente? Acho que cada letra está num retângulo com fundo transparente, mas e aí?
Estive lendo esse tópico do gifah e cismei de tentar fazer alguma coisa eu mesmo. Aí, no meio do caminho, a dúvida foi resolvida e eu fiquei com minha meia-engine pra brincar.
Então, até a coisa ser resolvida, eu estava num teste de como eliminar só uma área da surface, fazendo um buraco no lugar certo. Fiz, funcionou, beleza. Comecei a brincar com os blend modes. Queria desenhar um texto que sempre fosse visível, não importa o fundo sobre o qual ele está. Ou seja, um texto que sempre estivesse da cor oposta à cor do fundo.
Ora, eu
1 - muda o blend mode pra desenhar da cor inversa do fundo
2 - desenha o texto
3 - volta o blend mode ao normal
4 - corre pro abraço
Certo? Não. Primeiro, porque os blend modes são fatores multiplicativos, então se eu desenhar o texto em preto (tudo é zero), o texto sairá em preto (porque 0*0=0). Contornei isso desenhando em branco (tudo é 1, e 1*uma_coisa_qualquer=uma_coisa_qualquer).
Show, né? Olha como ficou o código:
- Código:
draw_set_blend_mode_ext(bm_inv_dest_color, bm_zero); //muda o blend mode
draw_text_color(view_xview[0]+20, view_yview[0]+20, "teste jasdflfkasdj", $ffffff, $ffffff, $ffffff, $ffffff, 1); //desenha um texto em branco
draw_set_blend_mode(bm_normal); //volta o blend mode ao normal
Se eu elimino os blend modes, o texto aparece lá, em branco, bonitão. Então o que está errado?
PS: Consegui o efeito desejado colocando o texto numa surface e mudando o blend mode pra (bm_inv_dest_color, bm_inv_src_alpha), mas continuo com a dúvida: porque isso não funciona no caso de tentar desenhar o texto diretamente? Acho que cada letra está num retângulo com fundo transparente, mas e aí?
Última edição por saim em Qui 07 Jul 2011, 17:21, editado 1 vez(es)
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: fontes, texto, blending e um efeito legal.
Aparentemente, quando mudamos a cor de um texto "tingimos" ele com a cor, inclusive as áreas transparentes. Aí quando vamos usar o blend mode o GM parece ignorar as partes transparente, considerando tudo branco com alpha 1, logo toda a área da fonte (o retângulo) é usada para inverter. Eu esbarrei com esse erro enquanto fazia o Math2011. O "Saúde: HP/MAXHP" iria usar a inversão de cores, mas por causa desse erro e por causa do mal-funcionamento de surfaces em certos PCs, resolvi fazer um texto com outline mesmo.
Essa é a minha teoria.
**EDIT**
DESCOBRI!!! Essa combinação de blendmodes ignora o alpha do que vai ser desenhado.
Antes do draw_text, experimente usar draw_text_color(view_xview[0]+20, view_yview[0]+20, "teste jasdflfkasdj", $ffffff, $ffffff, $ffffff, $ffffff, 0);(Valor do alpha no 0)
A inversão continuará, pois a área foi toda tingida de branco, com ou sem alpha. Há!!!
Essa é a minha teoria.
**EDIT**
DESCOBRI!!! Essa combinação de blendmodes ignora o alpha do que vai ser desenhado.
Antes do draw_text, experimente usar draw_text_color(view_xview[0]+20, view_yview[0]+20, "teste jasdflfkasdj", $ffffff, $ffffff, $ffffff, $ffffff, 0);(Valor do alpha no 0)
A inversão continuará, pois a área foi toda tingida de branco, com ou sem alpha. Há!!!
Re: fontes, texto, blending e um efeito legal.
Hm... mais ou menos...
Veja bem, eu postei uma segunda combinação pra surface que não ignora o alpha (senão, ficava tudo preto, no fundo branco, como estava acontecendo com a primeira combinação). Claro que testei essa segunda pro texto também. O resultado foi interessante num fundo branco, mas as partes transparentes ficaram brancas em qualquer fundo.
Mudar o alpha pra zero só vai fazer tudo ser transparente, o que DEVERIA resultar em nada na segunda combinação de blending, mas ainda desenha os retângulos brancos em qualquer fundo.
Veja bem, eu postei uma segunda combinação pra surface que não ignora o alpha (senão, ficava tudo preto, no fundo branco, como estava acontecendo com a primeira combinação). Claro que testei essa segunda pro texto também. O resultado foi interessante num fundo branco, mas as partes transparentes ficaram brancas em qualquer fundo.
Mudar o alpha pra zero só vai fazer tudo ser transparente, o que DEVERIA resultar em nada na segunda combinação de blending, mas ainda desenha os retângulos brancos em qualquer fundo.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: fontes, texto, blending e um efeito legal.
Testei a segunda combinação. Com ela o alpha define o quanto da inversão será misturado com o branco.
ex: O texto é todo branco.
Temos uma parte de alpha 0 (invisivel) e uma com alpha 1, que delinea o texto.
A area com alpha 0 é desenhada branca, independentemente do fundo, já a area com alpha 1 inverte a cor.
Mudei o alpha 0.5 . Agora o texto é desenhado em alpha 0.5.
A coloração do texto virou uma mistura do branco com a cor invertida.
Logo: Quanto mais próximo de 1 o alpha do desenho, mais pura a inversão. Quanto mais proximo de 0, mais "misturado" com branco fica a inversão.
Veja se consegue o mesmo resultado.
(Meu primeiro post se referia à primeira combinação de blendmodes )
EDIT
Esqueci de concluir porque funciona com as surfaces.
Quando a gente desenha o texto normalmente na surface, a área do texto com alpha 0 não é desenhada (duh), preservando a cor e o alpha do fundo. Geralmente usamos draw_clear_alpha(0,0), transformando o fundo em preto com alpha 0. A combinação de preto com alpha zero não é desenhada pela 2ª combinação (ainda não testei por que), dando o resultado desejado(inversão só no texto).
ex: O texto é todo branco.
Temos uma parte de alpha 0 (invisivel) e uma com alpha 1, que delinea o texto.
A area com alpha 0 é desenhada branca, independentemente do fundo, já a area com alpha 1 inverte a cor.
Mudei o alpha 0.5 . Agora o texto é desenhado em alpha 0.5.
A coloração do texto virou uma mistura do branco com a cor invertida.
Logo: Quanto mais próximo de 1 o alpha do desenho, mais pura a inversão. Quanto mais proximo de 0, mais "misturado" com branco fica a inversão.
Veja se consegue o mesmo resultado.
(Meu primeiro post se referia à primeira combinação de blendmodes )
EDIT
Esqueci de concluir porque funciona com as surfaces.
Quando a gente desenha o texto normalmente na surface, a área do texto com alpha 0 não é desenhada (duh), preservando a cor e o alpha do fundo. Geralmente usamos draw_clear_alpha(0,0), transformando o fundo em preto com alpha 0. A combinação de preto com alpha zero não é desenhada pela 2ª combinação (ainda não testei por que), dando o resultado desejado(inversão só no texto).
Re: fontes, texto, blending e um efeito legal.
Sem querer, você matou a charada!
Ao limpar a surface usando draw_clear_alpha($000000, 0), o fundo é PRETO transparente.
Usar um fundo BRANCO transparente - draw_clear_alpha($ffffff, 0), o erro é o mesmo que desenhar o texto diretamente.
Decerto, o fundo transparente da fonte é branco, também.
Nunca imaginaria que algo assim, tão invisível, influenciasse nas cores...
Tópico resolvido!
Edit: usei o "sem querer" porque você ainda não tinha testado o porque de um modo funcionar e o outro não. Se já tinha sido resolvido e eu que não tinha entendido, me desculpe.
Ao limpar a surface usando draw_clear_alpha($000000, 0), o fundo é PRETO transparente.
Usar um fundo BRANCO transparente - draw_clear_alpha($ffffff, 0), o erro é o mesmo que desenhar o texto diretamente.
Decerto, o fundo transparente da fonte é branco, também.
Nunca imaginaria que algo assim, tão invisível, influenciasse nas cores...
Tópico resolvido!
Edit: usei o "sem querer" porque você ainda não tinha testado o porque de um modo funcionar e o outro não. Se já tinha sido resolvido e eu que não tinha entendido, me desculpe.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Tópicos semelhantes
» Script para texto bem legal: Efeito de borda
» [TUTORIAL] Photoshop- Criando efeitos de texto- 3º) Efeito texto de água
» Efeito de texto
» Efeito de texto
» Efeito Texto (script de Pedro)
» [TUTORIAL] Photoshop- Criando efeitos de texto- 3º) Efeito texto de água
» Efeito de texto
» Efeito de texto
» Efeito Texto (script de Pedro)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|