GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por 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

Ir para baixo

fontes, texto, blending e um efeito legal. Empty fontes, texto, blending e um efeito legal.

Mensagem por saim Qui 07 Jul 2011, 15:17

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, eu escrevi 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:
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
Testem aí e me digam se funcionou. Porque, na minha máquina, não funcionou. As cores ficaram perfeitamente dentro do esperado, mas o texto se transformou num monte de retângulos.
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
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : fontes, texto, blending e um efeito legal. Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

fontes, texto, blending e um efeito legal. Empty Re: fontes, texto, blending e um efeito legal.

Mensagem por MatheusReis Qui 07 Jul 2011, 15:37

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á!!! sorrindo2
MatheusReis
MatheusReis

Games Ranking : Nota A

Notas recebidas : B-A-A
Data de inscrição : 13/01/2010
Reputação : 31
Número de Mensagens : 1093
Prêmios : fontes, texto, blending e um efeito legal. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Unity
  • Java
  • C#
  • Javascript


http://www.mathaeuz.deviantart.com

Ir para o topo Ir para baixo

fontes, texto, blending e um efeito legal. Empty Re: fontes, texto, blending e um efeito legal.

Mensagem por saim Qui 07 Jul 2011, 16:09

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.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : fontes, texto, blending e um efeito legal. Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

fontes, texto, blending e um efeito legal. Empty Re: fontes, texto, blending e um efeito legal.

Mensagem por MatheusReis Qui 07 Jul 2011, 16:54

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 silent)

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).
MatheusReis
MatheusReis

Games Ranking : Nota A

Notas recebidas : B-A-A
Data de inscrição : 13/01/2010
Reputação : 31
Número de Mensagens : 1093
Prêmios : fontes, texto, blending e um efeito legal. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Unity
  • Java
  • C#
  • Javascript


http://www.mathaeuz.deviantart.com

Ir para o topo Ir para baixo

fontes, texto, blending e um efeito legal. Empty Re: fontes, texto, blending e um efeito legal.

Mensagem por saim Qui 07 Jul 2011, 17:20

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.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : fontes, texto, blending e um efeito legal. Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

fontes, texto, blending e um efeito legal. Empty Re: fontes, texto, blending e um efeito legal.

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos