W jaki sposób można zrobić silnik graficzny

1

Witam! W jaki sposób można stworzyć silnik graficzny taki jak np. SDL2, opengl, sfml, itd.?

0

napisać od zera, tylko ze poza programowaniem trzeba tez umieć fizykę i matematykę

0

Bardziej mi chodzi o te aspekty renderingu i tworzenia okna. Matematyka i fizyka do samej grafiki?

0

Liczyć grafikę możesz nawet na kolanie. OpenGL czy SDL są opensource więc możesz po prostu zobaczyć jak to zrobiono.

0

Tak średnio chyba, bo załóżmy, że mamy metodę
extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags);

SDL_Init(SDL_INIT_EVERYTHING) nie mam napisanego co jest w samym środku, co dokłanie ta metoda robi.

Albo po prostu nie umiem szukać :v, albo chyba, że to trzeba w internecie szukać, a nie w pliku, z którego ładuje biblioteki

1

Możesz ściągnąć kod źródłowy i tam szukać, np do SDL kod masz tutaj: https://www.libsdl.org/download-2.0.php

0

Odpowiadając na pytanie. Musisz zaprojektować podstawowe aspekty silnika - materiały, oświetlenie, dźwięk, obiekty (tworzenie prymitywów, import z innych aplikacji), inputy itd. Gdy już będziesz wiedział, co chcesz i będziesz miał to zaprojektowane, możesz zabrać się za pisanie. Możesz kod oprzeć jedynie na DirectX albo jedynie na OpenGL. Możesz też stworzyć odpowiedni interfejs, dzięki któremu będziesz mógł używać zarówno OpenGl jak i DirectX. Co więcej, możesz stworzyć odpowiedni interfejs, dzięki któremu będziesz mógł używać DirectX w różnych wersjach.

To oczywiście dużo roboty. A wszystko zaczyna się od ogarnięcia DirectX i/lub OpenGL. Napisz w tym jakąś prostą grę. 2D, 3D... Jedną, drugą, trzecią. Będziesz wtedy miał lepsze obeznanie czego potrzebujesz i jak to zaprojektować i oprogramować. To wymaga też znajomości matematyki i fizyki. Musisz chociażby znać szczegóły dotyczące fizyki światła. A to tylko wierzchołek góry.

Na pewno nie baw się w tworzenie własnego silnika niskopoziomowego (typu DirectX, czy OpenGL), bo w pojedynkę po prostu polegniesz. I nie ma bata, żebyś napisał to lepiej.

0

Tak mocno upraszczając:
Komputer to samochód, system operacyjny to deska rozdzielcza a programista to kierowca ;)
Tak jak OS udostępnia funkcje do tworzenia procesów, plików, wyświetlania okienek, interacji itd. tak samo deska rozdzielcza udostępnia stacyjkę do uruchomienia pojazdu, pedały do kontrolowania prędkości czy kierownicę do wyznaczania kierunkiem jazdy.
Nie musisz wiedzieć jak działa zapłon, układ hamulcowy czy skrzynia biegów żeby jeździć samochodem. Choć Co oczywiście nie znaczy, że taka wiedza jest bezużyteczna ;)

0
HowToMake napisał(a):

Bardziej mi chodzi o te aspekty renderingu i tworzenia okna. Matematyka i fizyka do samej grafiki?

W takim razie nie pytasz o silnik graficzny tylko o programowy renderer. Dla porównania OpenGL to sprzętowy renderer. Nie znam się na tym temacie, ale są bardzo małe gotowce jak np. tinyrenderer od podejrzenia których można zacząć naukę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1