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

Król
źródło

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.

Skizz
źródło
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.

Slrs
źródło