Skocz do zawartości

Rozmazane rysowanie na surface'ach


sunflower

Rekomendowane odpowiedzi

Problem zachodzi dla wersji 1.1044, nie wiem, czy występował w poprzednich.

 

Przypadki są następujące:

- tworzę jednego surface'a wraz z tworzeniem obiektu i od razu rysuję sprite0; odpalam Alarm0 i Alarm1

- tworzę drugiego surface'a po Alarm0 i od razu rysuję sprite0

- po Alarm1 rysuję sprite1 na drugim surfacie

 

 

Niezależnie od przypadku o ile sprite'y rysują się prawidłowo, o tyle surface'y mają dziwną tendencję do zniekształcania tychże. Można to zobaczyć na tym obrazku: http://i42.tinypic.com/35n5xyo.png (na górze sprite0 i sprite1, na dole pierwszy surface i drugi surface, już po Alarm1).

 

Nic mi nie wiadomo na temat tego, żeby w przykładowym projekcie gdzieś zachodziła zmiana jakiegokolwiek rozmiaru (okna, sprite'a, cokolwiek) ani obracanie; nie widzę żadnych rozsądnych przesłanek, dla których sprite rysowany na surfacie nagle ma się rozmazywać. Postarałam się, żeby ten program testowy był raczej prymitywny i nie wprowadzał dodatkowych okazji do zakłóceń. O.o"

 

Jeśli nic nie robię źle i to jest bug GMa, to ktoś mógłby mi podpowiedzieć, jak właściwie mam tego buga zgłosić, żeby w YYG mi zauważyli? Bo przycisk rejestracji na bugs.yoyogames.com przekierowuje do strony na której można napisać raport, a wysłanie raportu z kolei prowadzi do rejestracji na help.yoyogames.com, na które nawet nie wiem czy ktoś zagląda, a na pewno nie wygląda to na stronę poświęconą tylko i wyłącznie błędom. >.<

Odnośnik do komentarza
Udostępnij na innych stronach

Kod źródłowy obiektu rysującego (alarmy pomijam, bo tylko ustawiają zmienne):

 

Create:

GML
surf = surface_create(32, 32); //tworzenie surf. dla przypadku 1

surf2 = 0; //zmienna surf. dla przypadku 2 i 3

varyy = false; //zmienna dla tworzenia i narysowania w przypadku 2

alarm[0] = 1; //ustawia varee na true

varee = false; //zmienna dla ponownego tworzenia i narysowania

alarm[1] = 60; //ustawia varyy na true

//rysowanie na surface 1 w tym samym bloku co jego tworzenie

surface_set_target(surf);

draw_sprite(sprite0, 0, 0, 0);

surface_reset_target();

 

 

Draw:

GML
//tworzenie surface 2 i bezzwłoczne rysowanie sprite0 (przypadek 2)

if (varyy)

{

surf2 = surface_create(32, 32);

 

surface_set_target(surf2);

draw_sprite(sprite0, 0, 0, 0);

surface_reset_target();

varyy = false;

}

 

//rysowanie sprite1 na juz istniejacym surface 2 (przypadek 3)

if (varee)

{

surface_set_target(surf2);

draw_sprite(sprite1, 0, 0, 0);

surface_reset_target();

varee = false;

}

 

//sprite0 i porownanie z surface 1

draw_sprite(sprite0, 0, 10, 10);

if (surface_exists(surf))

draw_surface(surf, 10, 50);

 

//sprite1 i porownanie z surface 2

draw_sprite(sprite1, 0, 50, 10);

if (surface_exists(surf2))

draw_surface(surf2, 50, 50);

 

Wersji 1.1.1076 jeszcze nie mam, prawdopodobnie ze względu na fakt późniejszego pojawiania się nowych wersji na Steamie. >.<

Odnośnik do komentarza
Udostępnij na innych stronach

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

Jedynie 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ę poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...