Skocz do zawartości
  • 0
Adriann

[GMS] Problemy z działaniem shaderów na Draw_GUI

Pytanie

Uszanowanko misiaczki!

Mam malutki problemik, a dokładniej dodałem shader modyfikujący grafikę, znajduje się on w najbardziej wysuniętym do przodu obiekcie.
Wszystko działa doskonale do momentu dodania drugiego obiektu rysującego coś również w Draw_Gui, kiedy znajduje się nad shaderem to nie działa a pod w ogóle się nie rysuje. Zwykłe draw w stylu animacji gracza czy tekstem nad nim działa wyśmienicie.
Co poradzić mogę na to? :o

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

5 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

Na pewno robisz dobrze shader_set i shader_reset ? no i pytanie jakie mają depth te oba obiekty (przypominam, że nawet jak wszystkie mają 0, to draw gui rysuje się dopiero po wszystkich normalnych draw).

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Obiekt z shaderem ma -999, jak obiekt rysujący ustawię na -9999 to nie zniekształca a jak np -99 to w ogóle nic nie rysuje. Przypominam jedno i drugie znajduje się w Draw_GUI.
A co do poprawności shaderu to nie wiem, chyba ok skoro działa wszystko poza tym jednym eventem;)
Całość działa mniej więcej tak:
 

if shader_on=1
{
surface_set_target(surf0)
draw_surface_part(application_surface, 0, 0, 400, 256,view_xview[0],view_yview[0])
surface_reset_target()

shader_set(shd_xbr_0); 
    shader_set_uniform_f(uni_0_resolution, var_view_width*1, var_view_height*1);
    
    surface_set_target(surf1)
    draw_surface_stretched(surf0, 0, 0, var_view_width*scale, var_view_height*scale);
    surface_reset_target()
    
shader_reset();


shader_set(shd_xbr_1); 
    shader_set_uniform_f(uni_1_resolution, var_view_width*scale, var_view_height*scale);
    
    surface_set_target(surf2)
    draw_surface(surf1, 0, 0);
    surface_reset_target()
   
shader_reset();

shader_set(shd_xbr_2); 
    shader_set_uniform_f(uni_2_resolution, var_view_width*scale, var_view_height*scale);
    
    surface_set_target(surf3)
    draw_surface(surf2, 0, 0);
    surface_reset_target()
   
shader_reset();

shader_set(shd_sharper); 
    shader_set_uniform_f(uni_sh_resolution, var_view_width*scale, var_view_height*scale);

    draw_surface_stretched(surf3, 0, 0, var_view_width*force_scale, var_view_height*force_scale);
shader_reset();
view_surface_id[0]=surf0
}
else
{
    draw_surface_stretched(surf0, 0, 0, var_view_width*force_scale, var_view_height*force_scale);
    view_surface_id[0]=surf0
}

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Jak przypisujesz surface do view, to w ogóle nie powinno kolidować z GUI. Chyba, że robisz to w evencie draw gui, to robisz to wtedy źle, bo GUI jest niezależne od view jeśli dobrze kojarzę. Może tutaj jest problem.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

a nie możesz na application surface w post draw zrobić ? (i wyłączyć automatyczne rysowanie application surface).

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×