Witam,
jest pewna rzecz, która mnie zastanawia, a dotyczy sposobu generowania grafiki przez konsole typu NES / SNES czy ogólnie komputery z grafiką sprite'ową. Właściwie jest to kilka pytań, natomiast sprowadza się do jednej kwestii - w jaki sposób rozwiązano nakładanie się poszczególnych warstw grafiki?
Przykład:
Oto znany i lubiany pan Gumba z Super Mario Bros. Pan Gumba jest spritem o wymiarach 16x16 pikseli, składającym się z czterech mniejszych obiektów 8x8 załadowanych do pamięci obiektów. Część danych z mapy koloru pana Gumby posiada wartość h00, oznaczająca kolor przezroczysty, czyli przestrzeń pod którą powinno być tło lub inny obiekt. W jaki sposób nakładano na siebie te warstwy? Co w sytuacji, gdy np. pokrywało się ze sobą więcej obiektów? Czy to było coś w stylu:
1. Załaduj do rejestru piksel z pamięci obiektu.
2. Jeżeli piksel jest przezroczysty => załaduj piksel z pamięci obiektu będącego poniżej
3. Jeżeli piksel jest przezroczysty => załaduj piksel z pamięci obiektu jeszcze bardziej poniżej
4. Jeżeli piksel jest przezroczysty => załaduj piksel z pamięci tła (upraszczając)
5. Wyświetl
(?)
Próbowałem to rozważać nawet w kontekście ładowania tła oraz wszystkich obiektów w całości i nakładania ich od najniższego priorytetu do najwyższego, przy czym nie wierzę, w takie rozwiązanie - byłoby to straszne marnowanie zasobów obliczeniowych.
jest pewna rzecz, która mnie zastanawia, a dotyczy sposobu generowania grafiki przez konsole typu NES / SNES czy ogólnie komputery z grafiką sprite'ową. Właściwie jest to kilka pytań, natomiast sprowadza się do jednej kwestii - w jaki sposób rozwiązano nakładanie się poszczególnych warstw grafiki?
Przykład:
Oto znany i lubiany pan Gumba z Super Mario Bros. Pan Gumba jest spritem o wymiarach 16x16 pikseli, składającym się z czterech mniejszych obiektów 8x8 załadowanych do pamięci obiektów. Część danych z mapy koloru pana Gumby posiada wartość h00, oznaczająca kolor przezroczysty, czyli przestrzeń pod którą powinno być tło lub inny obiekt. W jaki sposób nakładano na siebie te warstwy? Co w sytuacji, gdy np. pokrywało się ze sobą więcej obiektów? Czy to było coś w stylu:
1. Załaduj do rejestru piksel z pamięci obiektu.
2. Jeżeli piksel jest przezroczysty => załaduj piksel z pamięci obiektu będącego poniżej
3. Jeżeli piksel jest przezroczysty => załaduj piksel z pamięci obiektu jeszcze bardziej poniżej
4. Jeżeli piksel jest przezroczysty => załaduj piksel z pamięci tła (upraszczając)
5. Wyświetl
(?)
Próbowałem to rozważać nawet w kontekście ładowania tła oraz wszystkich obiektów w całości i nakładania ich od najniższego priorytetu do najwyższego, przy czym nie wierzę, w takie rozwiązanie - byłoby to straszne marnowanie zasobów obliczeniowych.