Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
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