Jak jest przechowywana i obsługiwana mapa gier 3D


9

Jestem programistą, ale nie opracowałem jeszcze żadnych gier.

Grałem w różne gry 3D i zawsze zastanawiałem się, jak mapa pola jest przechowywana i renderowana.

Wiem, że jakaś karta przyspieszenia jest niezbędnym sprzętem, ale jak dokładnie zmienia się widok bez nawet jednego migotania na ekranie.

Czy masz jakieś materiały online, które pomogą mi to zrozumieć?

Dzięki

Odpowiedzi:


9

Ogólnie świat składa się z wielu trójkątów, a mapa to lista tych trójkątów i lokalizacja w świecie każdego wierzchołka. Proces ich rysowania to:

  • Skonfiguruj pozycję „kamery” - gdybyś stał na świecie, tutaj byłbyś na światowej pozycji
  • Przekształć wierzchołki trójkąta w „przestrzeń kamery”
  • Przekształć trójkąty z „przestrzeni kamery” w „przestrzeń ekranu” - tutaj dzieje się efekt perpekcyjny (odległe rzeczy są mniejsze). W tym momencie trójkąty stają się 2D.
  • Narysuj trójkąt 2D na ukrytym ekranie.
  • Po narysowaniu wszystkich trójkątów pokaż graczowi ekran.

Ostatni krok jest zwykle związany z liczbą klatek na sekundę monitora, tak że proces pokazywania ukrytego ekranu odbywa się w odstępie V-blank - koncepcja wywodząca się z monitorów lamp elektronopromieniowych, które pozwalały na przesuwanie wiązki katodowej od dołu z prawej do góry po lewej, wymagało to szybkiej, ale nie natychmiastowej zmiany napięć na cewkach odchylających z tyłu lampy.

To jest naprawdę prosta metoda. Aby uzyskać wysoką wydajność, musisz dodać takie rzeczy, jak usuwanie ukrytej powierzchni, niedrożność, widoczne ustawienie zestawu i tak dalej. Istnieje wiele algorytmów zaangażowanych w podejmowanie decyzji, co narysować.

Powiedziałem też, że świat składa się z trójkątów, ale może nie być przechowywany na dysku w ten sposób. Często trójkąty rysowane na ekranie są definiowane w czasie wykonywania z prymitywów wyższego rzędu, takich jak mapy wysokości, splajny, tessalacja, prymitywy geometryczne (np. Kula, ramka itp.) I tak dalej.

Dedykowany sprzęt nie jest konieczny - wiele wczesnych gier 3D robiło to wszystko w oprogramowaniu (nawet na 8-bitowych procesorach bez FPU). To po prostu sprawia, że ​​jest to szybsze i łatwiejsze do zrobienia.

Takie proste pytanie. Nie ma łatwej odpowiedzi.


0

Widok jest zmieniany bez migotania na ekranie z powodu podwójnego buforowania. Przetwarzaj wszystkie dane z bufora tylnego, a po zakończeniu przetwarzania zamieniaj go na bufor przedni.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.