Conteúdo da surface desaparece do nada?

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Conteúdo da surface desaparece do nada?

Mensagem por GameMakerTutoriais em Ter 22 Maio 2012, 16:55

E aí pessoal! Outra loucura do GM, só que essa é ainda mais cabulosa. Tenho uma sala onde uso uma surface pra inverter as cores da tela do jogo. Eu crio a surface normalmente e uso um screen_redraw() "dentro dela". Tudo ok, com isso já tenho o que eu preciso capturado.

Em seguinda, desenho uma tela em branco por cima do que eu havia sido capturado, porém, com o blend mode para inverter as cores. Eu poderia fazer isso direto no evento Draw, mas quero que seja feito na surface propositalmente.

É aí que acontece o problema. Simplesmente do nada, o conteúdo da surface some. Se eu gravá-la num arquivo, ela se mostra perfeita da maneira que eu queria. Mas se tentar desenhá-la na tela, nada acontece. Não é alpha, não é blend, não sei o que é. Eu fiz um exemplo rápido aqui só pra mostrar o que eu falei:

http://dl.dropbox.com/u/77818756/problema_com_surface.gmk

A primeira sala é onde captura o conteúdo pra surface e tenta desenhá-la. Apertando Enter, vai pra segunda sala que é onde fica claro o problema. Enter novamente salva ela num arquivo. Entretanto, arquivo fica ok.

Eu fiz algo errado? Realmente, não tenho ideia do que seja...


Última edição por Ninja8086 em Ter 22 Maio 2012, 17:44, editado 1 vez(es)

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Conteúdo da surface desaparece do nada?

Mensagem por Klior em Ter 22 Maio 2012, 17:40

Concerta o link ae, não estou conseguindo baixar.

Klior

Número de Mensagens : 426
Idade : 25
Data de inscrição : 07/03/2010
Reputação : 13
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Conteúdo da surface desaparece do nada?

Mensagem por GameMakerTutoriais em Ter 22 Maio 2012, 17:46


Foi mal Klior, eu tinha excluído porque o exemplo tava errado. Arrumei agora.

http://dl.dropbox.com/u/77818756/problema_com_surface.gmk

Eu consegui fazer de uma outra maneira, mas se fosse possível, eu queria fazer desse jeito que eu falei. Realmente, não sei o que pode ser.

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Conteúdo da surface desaparece do nada?

Mensagem por Kabeção em Ter 22 Maio 2012, 21:24

Acho que sei o que é.
Apenas troquei/tirei a parte do blend é a surface ficou normal.

Esse tipo de blend "bm_inv_dest_color, bm_zero" deve estar invertendo ou apagando o alpha também, ou seja, se ele é 1 vai para 0 ai apaga a surface.
bm_zero: Blend factor is (0, 0, 0, 0).
bm_inv_dest_color: Blend factor is (1-Rd, 1-Gd, 1-Bd, 1-Ad).
Ali tem "1-Ad", então o alpha também é considerado nesse tipo de blend.
Já que o destino é bm_zero o resultado seria:

1-Ad + 0
1-1 + 0 (1 é o valor do alpha para o pixel)
0

bm_inv_src_color: Blend factor is (1-Rs, 1-Gs, 1-Bs, 1-As).
Em vez de bm_zero use bm_inv_src_color, desenhe o quadrado com alpha 0 e vai funcionar.

(1-Ad) + (1-As)
(1-1) + (1-0)
1

1 do alpha do pixel de destino, que no caso é tela redesenhada antes do blend e 0 do source que é o que esta desenhando depois te definir o blend.

Você pode ver a imagem quando salva em um arquivo provavelmente porque o GM ignora o alpha para salvar em bipmap.

Olha eu tenho que te agradecer! Razz
Graças a sua duvida agora que parei pra interpretar esse blend mode eu finalmente consegui entender a "mágica" por trás dele. O O O grande poder da matemática! nuu


Última edição por Kabeção em Ter 22 Maio 2012, 22:07, editado 1 vez(es)

Kabeção

Ranking : Sem avaliações
Número de Mensagens : 2314
Data de inscrição : 08/06/2008
Reputação : 100
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 0
   : 1

http://blackcapapps.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: Conteúdo da surface desaparece do nada?

Mensagem por GameMakerTutoriais em Ter 22 Maio 2012, 22:05

Eu tentei trocar pelo "bm_inv_src_color" como você falou, mas mesmo assim não deu. Mesmo salvando em png, a imagem fica do mesmo jeito. Não sei se o GM salva o alpha também, mas não tem problema porque isso me deu uma ideia.

Ele inverteu o alpha mesmo. Smile Eu fiz um desenho de um retângulo preto por cima com "bm_src_alpha" e "bm_one" e agora deu certo.

---- Editado ----

Ah, agora eu entendi! Usando isso com alpha zero:

Em vez de bm_zero use bm_inv_src_color, desenhe o quadrado com alpha 0 e vai funcionar.

Perfeito! Agora sim, ficou do jeito que eu queria. Obrigado pela explicação e pela ajuda! Ficou perfeito agora, créditos garantidos! Tópico resolvido.

---- Editado ----

Very Happy Deu certo:

http://gmbr.forumeiros.com/t22454-exemplo-efeito-de-filtro-emboss-em-tempo-real#168798

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Conteúdo da surface desaparece do nada?

Mensagem por Conteúdo patrocinado Hoje à(s) 07:46


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum