Skocz do zawartości

Zablokowane Allegro - warstwy rysowania


MZG

Rekomendowane odpowiedzi

Witam. Próbuje swoich sił w bibliotece Allegro i mam pewien irytujący problem którego nie umiem rozwiązać. (Wspomnę że jestem początkujący, więc to jest błahy problem).

Przykładowo - mam grę(jeśli można to tak nazwać) w której chodzę czerwoną kulką po ekranie. Chciałem aby jej prędkość była napisana w środku jej samej, w tym celu użyłem funkcji "textout_ex" z koordynatami

skierowanymi na środek owej kulki. I tu pojawia się problem, tekst jest za kulką a nie przed nią. Jest jakiś sposób żeby to kontrolować "co będzie na czym"? Sposób żeby każdy napis lub sprite miał swoją warstwę.

Żebym np. kulka była NA obrazku ziemi a POD teoretycznym "dachem"(patrząc z góry kulka po prostu schowała by się pod prostokąt)?

Odnośnik do komentarza
Udostępnij na innych stronach

Rysuj je w odpowiedniej kolejności, najpierw ludek a potem napis. Nie pamiętam już jak tam jest zbudowana ta biblioteka ale powinna być wbudowana możliwość ustawiania dla obiektów wartości Depth/Z/głębokość. Ostatecznie możesz coś takiego napisać samemu, sortujesz listę wszystkich obiektów według parametru głębokości a potem rysujesz je zaczynając od tych, które są"najdalej".

Odnośnik do komentarza
Udostępnij na innych stronach

int draw_ball()
{
        draw_sprite(bufor, kulka, b_x, b_y);
        blit( bufor1, screen, 0, 0, 0, 0, 1180, 720 );                        
}

Tym kodem rysuje kulkę.

 

int draw_text()
            {
                         textout_ex(bufor, font, "jakiśtam tekst", 400, 10,makecol(0, 0, 0), -1);

            }

Tym tekst.

while (!key[KEY_ESC])
{
            (...fps...)

           while(fps_licz > 0)
       {            
                    int fps_stary_licz = fps_licz;

                    hero.move_ball();
                    hero.speed_ball();
                    fps_licz--;
                    if(fps_stary_licz <= fps_licz)
                                      break;
       }

        (...inne fps...)
       system.draw_text();
       hero.draw_ball();
       hero.debug();
       clear_to_color(bufor, makecol(255,255,255));

       textprintf_ex(bufor, font, 10, 10, makecol(0, 0,0),-1, "FPS:%d", fps_fps);




}

A to pętla gry. Tyle z kodem, jakoś sam nie wiem po co go pokazywać. Chciałbym wiedzieć jak zrobić te warstwy, bo kolejność w przypadku napisów chyba nie ma znaczenia :/

Odnośnik do komentarza
Udostępnij na innych stronach

Problem rozwiązany :D. Ale nie, nie chodziło o przestawienie (próbowałem wcześniej), tylko o to że napis raz rzutowany na ekran nie był odświeżany. Czyli nie przechodził przez bufora, więc gdyby się ruszał zostawiał by ślady. Teraz jest wszystko dobrze :D Dzięki za to że chciało wam się w ogóle odpisywać, temat do zamknięcia.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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