Obrigado por visitar a The Game Makers Brasil |
Qualidade dos sprites alterada quando maximizo a tela.
- Matheus Carvalho
- Membro
- Reações: 0
- Mensagens: 21
-
Qualidade dos sprites alterada quando maximizo a tela.
Acabei de fazer o teste, se iniciar com o Port on Screen em 1920x1080, a qualidade fica certa ao colocar em tela cheia. Se começar com ela em 480x270 e depois maximizar, a qualidade dos sprites é reduzida drasticamente. Sem alterar o View in Room.
Por que isso acontece e como resolvo?
Até então achava que o GM utilizava os sprites sempre no tamanho real deles, depois fazia downscale ou upscale de acordo com o tamanho da tela, mas aparentemente ele usa o tamanho da primeira tela.
Por que isso acontece e como resolvo?
Até então achava que o GM utilizava os sprites sempre no tamanho real deles, depois fazia downscale ou upscale de acordo com o tamanho da tela, mas aparentemente ele usa o tamanho da primeira tela.
Re: Qualidade dos sprites alterada quando maximizo a tela.
Aqui vai uma imagem de explicação:

View In Room: É o recorte da room que irá aparecer na tela.
Port on Screen: Tamanho do recorte feito com o View In Room na tela/janela. Se escolher o mesmo tamanho não tem perda de qualidade, pois a proporção fica 1:1. Isso contando que em tela cheia a resolução não seja maior, mas caso seja ocorrerá um UpScaling (A imagem será esticada).
Ou seja, se a View In Room for 320x240 e a Port On Screen for 640x480 a imagem é ampliada em 2x e assim acarretando perda de definição. E se ativarmos o FullScreen e o monitor tenha por exemplo 1024x768, a imagem será ampliada novamente.
Agora, quando você tem um jogo com a resolução maior que a janela ou também maior que a tela, você tem que alterar o tamanho da surface de desenho do jogo. Logo essa surface também precisa ser alterada no código de troca entre Tela Cheia e Modo Janela. Ex: (No evento Step):
Espero que ajude.
FLWS!

View In Room: É o recorte da room que irá aparecer na tela.
Port on Screen: Tamanho do recorte feito com o View In Room na tela/janela. Se escolher o mesmo tamanho não tem perda de qualidade, pois a proporção fica 1:1. Isso contando que em tela cheia a resolução não seja maior, mas caso seja ocorrerá um UpScaling (A imagem será esticada).
Ou seja, se a View In Room for 320x240 e a Port On Screen for 640x480 a imagem é ampliada em 2x e assim acarretando perda de definição. E se ativarmos o FullScreen e o monitor tenha por exemplo 1024x768, a imagem será ampliada novamente.
Agora, quando você tem um jogo com a resolução maior que a janela ou também maior que a tela, você tem que alterar o tamanho da surface de desenho do jogo. Logo essa surface também precisa ser alterada no código de troca entre Tela Cheia e Modo Janela. Ex: (No evento Step):
Código: Selecionar todos
// Se teclar F4
if keyboard_check_pressed(vk_f4)
{
if window_get_fullscreen()
{
//Tamanho da janela
window_set_size(view_wport[0], view_hport[0]);
//Desenho = tamanho da janela
surface_resize(application_surface, view_wport[0], view_hport[0]);
//Vai para o modo janela
window_set_fullscreen(false);
}
else
{
//Desenho = tamanho da tela
surface_resize(application_surface, display_get_width(), display_get_height());
//Vai para o modo tela cheia
window_set_fullscreen(true);
}
}
FLWS!
- Matheus Carvalho
- Membro
- Reações: 0
- Mensagens: 21
-
Re: Qualidade dos sprites alterada quando maximizo a tela.
Entendi o que tava fazendo errado, re-refiz o código e ficou assim:
Agora está funcionando perfeitamente, muito obrigado pela ajuda.
Muito obrigado. Acho que entendo o que acontece, porém, ainda estou com problemas.
Modifiquei seu código para ficar assim:
Ou seja, se tiver em tela cheia ele sai dela, e se não tiver ele vai pra ela. Problemas:
- Não funcionou na primeira room, ele apenas vai para tela cheia (porém preenche a tela toda), os sprites continuam perdendo qualidade.
- Funcionou na segunda room, porém apareceram barras pretas nas laterais, o que não era pra acontecer pois meu note é 16:9, a mesma proporção que uso na View in Room.
Código: Selecionar todos
if keyboard_check_pressed(vk_f4)
{
if !window_get_fullscreen()
{
window_set_fullscreen(1)
surface_resize(application_surface, display_get_width(), display_get_height());
}
else
{
window_set_fullscreen(0)
surface_resize(application_surface, view_wport[0], view_hport[0]);
}
}
Muito obrigado. Acho que entendo o que acontece, porém, ainda estou com problemas.
Modifiquei seu código para ficar assim:
Código: Selecionar todos
if keyboard_check_pressed(vk_f4)
{
window_set_fullscreen(!window_get_fullscreen())
surface_resize(application_surface, view_wport[0], view_hport[0]);
}
Ou seja, se tiver em tela cheia ele sai dela, e se não tiver ele vai pra ela. Problemas:
- Não funcionou na primeira room, ele apenas vai para tela cheia (porém preenche a tela toda), os sprites continuam perdendo qualidade.
- Funcionou na segunda room, porém apareceram barras pretas nas laterais, o que não era pra acontecer pois meu note é 16:9, a mesma proporção que uso na View in Room.
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes