Página 1 de 1

Qualidade dos sprites alterada quando maximizo a tela.

Enviado: Seg Mai 23, 2016 5:30 am
por Matheus Carvalho
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.

Re: Qualidade dos sprites alterada quando maximizo a tela.

Enviado: Seg Mai 23, 2016 10:14 am
por All-x
Aqui vai uma imagem de explicação:

Imagem

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);
    }
}
Espero que ajude.

FLWS!

Re: Qualidade dos sprites alterada quando maximizo a tela.

Enviado: Seg Mai 23, 2016 1:29 pm
por Matheus Carvalho
Entendi o que tava fazendo errado, re-refiz o código e ficou assim:

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]);
    }
}
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:


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.