Z wiki : „Interfejs API Vulkan był początkowo określany przez Khrono jako„ inicjatywa OpenGL nowej generacji ” i że jest to „ gruntowna próba przeprojektowania w celu ujednolicenia OpenGL i OpenGL ES w jednym wspólnym interfejsie API, który nie będzie wsteczny kompatybilny z istniejącymi wersjami OpenGL ”.
Czy więc tym, którzy teraz zaczynają programować grafikę, lepiej służyć naukę Vulkan zamiast OpenGL? Wygląda na to, że będą służyć temu samemu celowi.
Odpowiedzi:
Ledwie!
To wydaje się bardzo podobne do pytania „Czy nowi programiści uczą się C ++ zamiast C” lub „Czy nowi artyści powinni uczyć się malarstwa cyfrowego zamiast malowania fizycznego”.
Zwłaszcza, że NIE jest on kompatybilny z poprzednimi wersjami, programiści graficzni byliby głupi, aby wykluczyć najpopularniejszy interfejs graficzny API w branży, po prostu dlatego, że jest nowy. Ponadto OpenGL robi różne rzeczy inaczej. Jest całkiem możliwe, że firma wybrałaby OpenGL zamiast Vulkan, szczególnie na początku gry, i ta firma nie byłaby zainteresowana kimś, kto nie zna OpenGL, niezależnie od tego, czy zna Vulkan, czy nie.
Specjalizacja rzadko jest umiejętnością rynkową.
Dla tych, którzy nie muszą sprzedawać swoich umiejętności, takich jak niezależni programiści, byłoby jeszcze WIĘCEJ głupotą usunąć narzędzie ze swojego zestawu narzędzi. Niezależny twórca jest jeszcze bardziej zależny od elastyczności i możliwości wyboru tego, co działa, a nie tego, co zostanie sfinansowane. Specjalizacja w Vulkan ogranicza tylko twoje opcje.
Specjalizacja rzadko jest skutecznym paradygmatem.
źródło
Jeśli zaczynasz już teraz i chcesz pracować na GPU (w przeciwieństwie do zawsze używania silnika gry, takiego jak Unity), zdecydowanie powinieneś zacząć od nauki Vulkan. Być może powinieneś także nauczyć się GL później, ale jest kilka powodów, aby sądzić, że Vulkan-first.
GL i GLES zostały zaprojektowane wiele lat temu, kiedy procesory graficzne działały zupełnie inaczej. (Najbardziej oczywistą różnicą są wywołania w trybie natychmiastowym w porównaniu z kolejkami sąsiadującymi i kolejkami poleceń). GL zachęca do myślenia w trybie natychmiastowym i ma wiele starszych wątków. Vulkan oferuje modele programowania, które są znacznie bliższe temu, jak działają współczesne układy GPU, więc jeśli nauczysz się Vulkan, lepiej zrozumiesz, jak technologia naprawdę działa, a co jest wydajne, a co nieefektywne. Widzę wielu ludzi, którzy zaczynali od GL lub GLES i od razu wpadają w złe nawyki, takie jak wydawanie osobnych wywołań losowania na obiekt zamiast korzystania z VBO lub, co gorsza, przy użyciu list wyświetlania. Programiści GL mają trudności z ustaleniem, czego już się nie zachęca.
O wiele łatwiej jest przejść z Vulkan do GL lub GLES niż odwrotnie. Vulkan wyjaśnia wiele rzeczy, które były ukryte lub nieprzewidywalne w GL, takich jak kontrola współbieżności, współdzielenie i stan renderowania. Sprawia, że sterownik staje się bardziej skomplikowany, ale dzięki temu daje kontrolę nad aplikacją i ułatwia uzyskanie przewidywalnej wydajności i kompatybilności między różnymi dostawcami GPU. Jeśli masz jakiś kod, który działa w Vulkan, dość łatwo można go przenieść do GL lub GLES, a kończy się na czymś, co wykorzystuje dobre nawyki GL / GLES. Jeśli masz kod, który działa w GL lub GLES, prawie musisz zacząć od nowa, aby działał wydajnie w Vulkan: szczególnie, jeśli został napisany w starszym stylu (patrz punkt 1).
Z początku martwiłem się, że programowanie w Vulkan jest o wiele trudniejsze i że dla doświadczonych programistów w większych firmach byłoby to w porządku, ale stanowiłoby to ogromną barierę dla indies i hobbystów. Zadałem to pytanie niektórym członkom grupy roboczej, którzy powiedzieli, że mają pewne punkty danych od osób, z którymi rozmawiały, które już przeprowadziły się do Vulkan. Ci ludzie to zarówno twórcy oprogramowania Epic pracujący nad integracją UE4, jak i hobbystyczni twórcy gier. Ich doświadczenie polegało na tym, że rozpoczęcie (tj. Uzyskanie jednego trójkąta na ekranie) wymagało poznania większej liczby pojęć i posiadania dłuższego kodu, ale nie było to zbyt skomplikowane, nawet dla indies. Ale po przejściu do tego etapu znacznie łatwiej było zbudować prawdziwą aplikację, którą można wysłać, ponieważ (a) zachowanie jest znacznie bardziej przewidywalne między implementacjami różnych dostawców, oraz (b) osiągnięcie czegoś, co działało dobrze przy wszystkich włączonych efektach, nie wymagało tyle prób i błędów. Dzięki tym doświadczeniom od prawdziwych programistów przekonali mnie, że programowanie przeciwko Vulkanowi jest wykonalne nawet dla początkujących grafików i że ogólna złożoność jest mniejsza, gdy przejdziesz samouczek i zaczniesz budować wersje demonstracyjne lub aplikacje, które możesz przekazać innym osobom.
Jak powiedzieli inni: GL jest dostępny na wielu platformach, WebGL to przyjemny mechanizm dostarczania, istnieje wiele istniejących programów, które używają GL, i wielu pracodawców zatrudnia tę umiejętność. Będzie on dostępny przez kilka następnych lat, podczas gdy Vulkan rozwija się i rozwija ekosystem. Z tych powodów głupotą byłoby całkowite wykluczenie uczenia się GL. Mimo to będziesz miał o wiele łatwiejszy czas i staniesz się lepszym programistą GL (i ogólnie lepszym programatorem GPU), jeśli zaczniesz od czegoś, co pomaga zrozumieć GPU, zamiast rozumieć, jak działały 20 lat temu.
Oczywiście jest jeszcze jedna opcja. Nie wiem, czy dotyczy to w szczególności Ciebie, ale i tak powinienem to powiedzieć innym odwiedzającym.
Aby być niezależnym twórcą gier lub projektantem gier lub tworzyć doświadczenia VR, nie musisz uczyć się Vulkan ani GL. Wiele osób zaczyna pracę z silnikiem gier (obecnie popularne są Unity lub UE4). Korzystanie z takiego silnika pozwoli Ci skupić się na wrażeniach, które chcesz stworzyć, zamiast na technologii, która za tym stoi. Ukryje przed Tobą różnice między GL i Vulkan i nie musisz się martwić, które z nich jest obsługiwane na Twojej platformie. Pozwoli Ci dowiedzieć się o współrzędnych 3D, transformacjach, oświetleniu i animacji bez konieczności zajmowania się wszystkimi drobiazgowymi szczegółami naraz. Niektóre studia gier lub VR działają tylko w silniku i nie mają w ogóle pełnoetatowego eksperta GL. Nawet w większych studiach, które piszą własne silniki, osoby zajmujące się programowaniem graficznym stanowią mniejszość,
Poznanie szczegółów interakcji z GPU to z pewnością przydatna umiejętność, którą doceni wielu pracodawców, ale nie powinieneś się czuć, jakbyś musiał nauczyć się tego, aby dostać się do programowania 3D; i nawet jeśli o tym wiesz, niekoniecznie będzie to coś, czego używasz na co dzień.
źródło
Nauka programowania grafiki to coś więcej niż tylko nauka interfejsów API. Chodzi o nauczenie się, jak działa grafika. Transformacje wierzchołków, modele oświetlenia, techniki cieni, mapowanie tekstur, odroczone renderowanie i tak dalej. Nie mają one absolutnie nic wspólnego z interfejsem API używanym do ich implementacji.
Pytanie brzmi: czy chcesz nauczyć się korzystać z interfejsu API? A może chcesz nauczyć się grafiki ?
Aby robić rzeczy z grafiką przyspieszaną sprzętowo, musisz nauczyć się korzystać z interfejsu API, aby uzyskać dostęp do tego sprzętu. Ale kiedy masz już możliwość komunikowania się z systemem, nauka grafiki przestaje koncentrować się na tym, co robi interfejs API, a zamiast tego skupia się na koncepcjach graficznych. Oświetlenie, cienie, mapy wypukłości itp.
Jeśli Twoim celem jest poznanie koncepcji graficznych, czas spędzany z interfejsem API to czas, który nie poświęcasz na naukę koncepcji graficznych . Jak skompilować shadery, nie ma to nic wspólnego z grafiką. Nie dotyczy to również wysyłania mundurów, przesyłania danych wierzchołków do buforów itp. Są to narzędzia i ważne narzędzia do wykonywania zadań graficznych.
Ale tak naprawdę nie są to koncepcje graficzne. Są środkiem do celu.
Vulkan wymaga dużo pracy i nauki, zanim osiągniesz punkt, w którym możesz zacząć uczyć się koncepcji graficznych. Przekazywanie danych do shaderów wymaga jawnego zarządzania pamięcią i jawnej synchronizacji dostępu. I tak dalej.
Natomiast dotarcie do tego punktu za pomocą OpenGL wymaga mniej pracy. Tak, mówię o nowoczesnym, opartym na shaderze rdzeniowym OpenGL.
Po prostu porównaj, co trzeba zrobić, aby zrobić coś tak prostego, jak wyczyszczenie ekranu. W Vulkan wymaga to przynajmniej zrozumienia dużej liczby pojęć: buforów poleceń, kolejek urządzeń, obiektów pamięci, obrazów i różnych konstrukcji WSI.
W OpenGL ... to trzy funkcje:
glClearColor
,glClear
, a swap platforma specyficzne buforuje połączenia. Jeśli używasz bardziej nowoczesnego OpenGL, możesz zmniejszyć go do dwóch:glClearBufferuiv
i zmienić bufory. Nie musisz wiedzieć, co to jest bufor ramki i skąd pochodzi jego obraz. Czyścisz go i zamieniasz bufory.Ponieważ OpenGL dużo przed tobą ukrywa, przejście do punktu, w którym faktycznie uczysz się grafiki, zajmuje o wiele mniej wysiłku niż uczenia się interfejsu do sprzętu graficznego.
Ponadto OpenGL jest (względnie) bezpiecznym API. Zwykle będzie powodować błędy, gdy zrobisz coś złego. Vulkan nie jest. Chociaż istnieją warstwy debugujące, których można użyć do pomocy, podstawowy interfejs API Vulkan nie powie prawie nic, chyba że wystąpi awaria sprzętowa. Jeśli zrobisz coś złego, możesz uzyskać wyrzucanie elementów bezużytecznych lub awarię GPU.
W połączeniu ze złożonością Vulkan, bardzo łatwo jest przypadkowo zrobić coś złego. Zapominanie o ustawieniu tekstury we właściwym układzie może działać w ramach jednej implementacji, ale nie w innej. Zapomnienie punktu syronizacji może czasem działać, ale nagle kończy się niepowodzeniem z pozoru bez powodu. I tak dalej.
Mimo to, nauka grafiki to coś więcej niż nauka technik graficznych. W szczególności jest jeden obszar, w którym wygrywa Vulkan.
Wydajność graficzna .
Bycie programistą grafiki 3D zazwyczaj wymaga pomysłu na optymalizację kodu. I to tutaj ukrywanie informacji przez OpenGL i robienie rzeczy za twoimi plecami staje się problemem.
Model pamięci OpenGL jest synchroniczny. Implementacja może wydawać polecenia asynchronicznie, o ile użytkownik nie będzie w stanie odróżnić. Jeśli więc renderujesz obraz, a następnie spróbuj go odczytać, implementacja musi wydać jawne zdarzenie synchronizacji między tymi dwoma zadaniami.
Ale aby osiągnąć wydajność w OpenGL, musisz wiedzieć, że implementacje to robią, abyś mógł tego uniknąć . Musisz zdać sobie sprawę, gdzie implementacja potajemnie generuje zdarzenia synchronizacji, a następnie przepisać kod, aby uniknąć ich w jak największym stopniu. Ale sam interfejs API nie czyni tego oczywistym; skądś musiałaś zdobyć tę wiedzę.
Dzięki Vulkan ... to ty musisz wydać te zdarzenia synchronizacji. Dlatego musisz zdawać sobie sprawę z faktu, że sprzęt nie wykonuje poleceń synchronicznie. Musisz wiedzieć, kiedy musisz wydać te zdarzenia, dlatego musisz mieć świadomość, że prawdopodobnie spowolnią Twój program. Robisz więc wszystko, aby ich uniknąć.
Wyraźny interfejs API, taki jak Vulkan, zmusza do podejmowania tego rodzaju decyzji dotyczących wydajności. A zatem, jeśli nauczysz się Vulkan API, masz już dobry pomysł na to, jakie rzeczy będą wolne i jakie będą szybkie.
Jeśli musisz wykonać trochę buforowania klatek, który zmusi cię do utworzenia nowego passpassu ... szanse są dobre, że będzie on wolniejszy niż gdybyś mógł zmieścić go w osobnym subpassu renderpassu. Nie oznacza to, że nie możesz tego zrobić, ale interfejs API mówi z góry, że może to powodować problemy z wydajnością.
W OpenGL interfejs API zasadniczo zachęca do zmiany załączników bufora ramki. Nie ma wskazówek, które zmiany będą szybkie lub powolne.
W takim przypadku nauka Vulkan może pomóc ci lepiej dowiedzieć się, jak przyspieszyć grafikę. I z pewnością pomoże ci zmniejszyć obciążenie procesora.
Nadal zajmie to znacznie więcej czasu, zanim przejdziesz do etapu, w którym możesz nauczyć się technik renderowania graficznego.
źródło
Główną zaletą OpenGL (przynajmniej dla mnie) jest to, że działa na wielu platformach. Obecnie Vulkan nie działa na OSX, a Apple ma konkurencyjny interfejs API o nazwie Metal. Jest bardzo możliwe, że minie trochę czasu, zanim Apple wesprze Vulkan, a kiedy to zrobią, wsparcie Vulkan może przyjść tylko do ich najnowszego sprzętu. OpenGL obsługuje już większość sprzętu i nadal będzie to robić.
źródło
To zależy od tego, co chcesz zrobić. Jeśli chcesz nauczyć się programowania grafiki tylko dla siebie, to naprawdę nie ma znaczenia, co wybierzesz.
Jeśli myślisz o pracy zawodowej, polecam Vulkan. Jest bliżej sprzętu i myślę, że wiedza o tym, co robi sprzęt, jest ważna dla programistów graficznych.
Vulkan jest bliżej sprzętu, ponieważ OpenGL robi wiele rzeczy pod maską, co w Vulkan robisz ręcznie, np. Wykonujesz kolejkę poleceń. Również zarządzanie pamięcią zależy od aplikacji, a nie sterownika. Musisz się martwić o przydzielenie pamięci
uniforms
(zmienną przekazywaną z procesora na GPU), o ich śledzenie. Masz więcej powodów do zmartwień, ale daje też więcej swobody w korzystaniu z pamięci. Może zabrzmieć przerażająco i przytłaczająco, ale tak naprawdę nie jest. To tylko kolejny interfejs API, którego musisz się nauczyć.Zrozumienie tego pomoże również zrozumieć, jak działa procesor graficzny. Co pozwoli ci dokonać optymalizacji zarówno na Vulkan, jak i OpenGL.
I jeszcze jedna rzecz, która przychodzi mi na myśl, jeśli zaczynasz uczyć się programowania grafiki, prawdopodobnie kiedy szukasz pracy, ponieważ jeden Vulkan będzie bardziej popularny (być może bardziej popularny niż OpenGL). Ponadto, o ile wiem, większość firm korzystających z niektórych graficznych interfejsów API pisze własne funkcje wokół niego, więc jest szansa, że w pracy nie będziesz pisać w OpenGL ani w Vulkan, ale wiedza o GPU zawsze będzie przydatna.
źródło
Od kilku miesięcy zajmuję się programowaniem grafiki.
W tej chwili jestem jeszcze w liceum i mogę powiedzieć, że prawie zawsze staram się tworzyć aplikacje na wiele platform. To w rzeczywistości mój numer jeden problemu z Vulkanem - nie jest przeznaczony do pracy na wszystkich platformach. Pracuję z OpenGL w Javie i mam ponad 6 miesięcy.
Innym problemem, jaki mam, jest twierdzenie Vulkanu, jak twierdzi, że jest lepszy. Chociaż OpenGL z pewnością nie aktualizuje często swojej witryny. Ciągle publikują aktualizacje i zawsze czekam na nowe aktualizacje, które działają szybciej lub lepiej działają z nowym sprzętem.
Biorąc to pod uwagę, chociaż głównie pracuję z OpenGL, rozumiem podstawowe zasady DirectX i Vulkan. Chociaż nie pracuję z nimi zbyt intensywnie, szczególnie z Vulkanem, ponieważ jest bardzo trudny do nauczenia się i nie jest tak dobrze skonstruowany do programowania jak OpenGl i DirectX.
Na koniec chciałbym dodać, że specjalizowanie się w jednym obszarze, jak to, że głównie używam Javy, a OpenGL nie jest niesamowicie samodzielnym rynkiem. Gdybym chciał znaleźć pracę w firmie zajmującej się tworzeniem gier, w przeważającej części OpenGL byłby używany tylko do tworzenia gier dla systemów Linux i Android oraz ewentualnie dla OSX. DirectX dla Windows i konsol <Które Vulkan może zastąpić w niektórych przypadkach.
Nie mogę wiecznie trzymać się aktualizacji OpenGL i nie będę. Ale to moja preferencja dla rozwoju.
źródło
Chciałbym dać wam moją graficzną perspektywę dla początkujących na ten temat. Uświadomiłem sobie (przez wiele lat pracy jako inżynier w innej dziedzinie), że podstawowe pojęcia są najważniejsze. Kiedy już dobrze je zrozumiesz, nauka ostatniego błyszczącego nowego API jest najmniej trudną częścią. Nie wiem, czy jesteś młodym hobbystą próbującym zaprogramować nowego Skyrim, czy też szukasz pracy w branży komputerowej.
Powiem ci, co myślę, że jest to najlepsze podejście , moim zdaniem , aby dowiedzieć się grafiki komputerowej „jak profesjonalista”.
Zrozumienie wydajności przed zrozumieniem, jak narysować linię, jest jak martwienie się o aerodynamikę samochodu przed uzyskaniem prawa jazdy.
źródło
Jestem samoukiem w C ++ bez formalnego wykształcenia i przez ostatnie 15 lat nauczyłem się zarówno OpenGL 1.0, jak i Modern OpenGL oraz DirectX 9c, 10 i 11. Nie dostałem się do DirectX 12 i chciałem spróbuj swoich sił w Vulkan. Ukończyłem tylko kilka podstawowych samouczków, aby narysować prosty trójkąt lub prostą wirującą kostkę za pomocą Vulkanu. Podobnie jak w przypadku DirectX 11 i OpenGL 3.3+, napisałem w pełni działające silniki gier 3D, a nawet używałem ich do tworzenia prostych gier.
Chciałbym powiedzieć, że zależy to od ogólnego środowiska osoby uczącej się. Jeśli dopiero zaczynasz programować grafikę 3D, powiem, że dla początkujących wskocz do OpenGL lub DirectX 11, ponieważ istnieje wiele samouczków, zasobów, przykładów i już działających aplikacji. Nauka grafiki 3D nie jest łatwym przedmiotem.
Jeśli oderwamy się od jego programowania i skupimy się na pojęciu, jakie techniki są stosowane z uwzględnieniem różnych poziomów matematyki prowadzących do zbiorów danych oraz struktur i algorytmów danych; jest wiele rzeczy, które musisz najpierw zrozumieć i zrozumieć, zanim będziesz mógł spróbować zbudować silnik gry 3D lub efektywnie wykorzystać istniejący.
Teraz, jeśli rozumiesz już całą matematykę i teorię, i masz doświadczenie w programowaniu, możesz użyć już istniejących interfejsów API, bibliotek i aplikacji, takich jak Unity lub Unreal Engine, i po prostu napisać kod źródłowy i skrypty potrzebne do działania aplikacji. .
Tak więc z mojego własnego zrozumienia i tego, co widzę, jest tak, jeśli chcesz zbudować szybką grę tylko ze względu na zbudowanie gry; przejdź do już istniejących prac ramowych, które znacznie skróciłyby Twój czas produkcji. Z drugiej strony, jeśli chcesz zrozumieć wewnętrzne zasady projektowania Silników do gier / Silników fizycznych / Silników animacyjnych i symulatorów i chcesz samodzielnie je zbudować, możesz wybrać między takim interfejsem API, jak DirectX, OpenGL lub Vulkan. Jednym z czynników decydujących w tym przypadku byłaby również twoja wiedza programistyczna. Mam na myśli to, że nie wiesz nic o połączeniach wielowątkowych, połączeniach synchronicznych i asynchronicznych, płotach pamięci, wyścigach danych, semaforach i równoległości (programowanie równoległe),
Wspominam o tym, ponieważ jeśli nie wiesz, jak właściwie zarządzać pamięcią wraz z wątkami i czasem dostępu; Vulkan ugryzie cię w tyłek! Gdzie OpenGL i DirectX utrzymają Twoją rękę przez cały czas, zużywając znacznie więcej mocy procesora.
Teraz, jeśli Twój poziom wiedzy programistycznej jest przyzwoity i masz następujące podstawy matematyczne, które obejmują wszystkie poziomy Algebry, Geometrii, Trygonometrii, Algebry Boolean, Prawdopodobieństwo, Statystyka, Wektor - Algebra oparta na Matrycy, Rachunek I, II, ... Infinty (lol). Rachunek wektorowy, Algebra liniowa, Układy równań liniowych, Geometria analityczna z Rachunkiem wektorowym obliczeń wielozmiennych, Teoria liczb i zbiorów, Zbiory i struktury danych, Analiza obliczeniowa, Obliczanie i projektowanie algorytmiczne. Następnie możesz zapoznać się z koncepcjami potrzebnymi do stworzenia rzeczywistego silnika gry, i to bez żadnych zastosowanych matematyki ani równań fizyki, których potrzebujesz. Gdy zdobędziesz to doświadczenie i wystarczająco dużo doświadczenia programistycznego, zwłaszcza zarządzania pamięcią i arytmetyki wskaźników, możesz zacząć budować silnik gry.
Rzecz w tym, że musisz zrozumieć wszystkie aspekty niezbędne do stworzenia silnika gry, aby wykonać zaawansowane programowanie graficzne. Jeśli robisz tylko grafikę 2D, życie nie jest zbyt trudne, ponieważ możesz to zrobić w Pythonie bez żadnego z wyżej wymienionych interfejsów API! Ale jeśli chcesz być poważny i zaprojektować pełnoprawny, potężny silnik gry, który jest solidny z wieloma zestawami funkcji, wybierz tutaj C lub C ++ i używając OpenGL, Direct X lub Vulkan. Każdy z nich byłby w porządku. Teraz, jeśli budujesz silnik od zera i szukasz najbardziej „wydajnego” działającego silnika z najmniejszym narzutem zasobów, powinieneś wybrać Vulkan. Ale jeśli pójdziesz tą drogą, powinieneś przynajmniej wiedzieć wszystko, o czym wspomniałem powyżej i niektóre!
Jak widać, Vulkan nie jest tak naprawdę nastawiony na początkujących programistów w tej dziedzinie. Musisz mieć rozległą wiedzę na temat całej matematyki, paradygmatów programowania, wszystkich różnych rodzajów zestawów danych i algorytmów, w tym wątków, synchronizacji pamięci, programowania równoległego. I nawet wtedy to wystarczy, aby aplikacja załadowała prosty trójkąt 2D na ekran. Co można zrobić w około 100 liniach kodu w OpenGL lub 250 liniach kodu w DirectX, zajmuje prawie 1000 linii kodu w Vulkan!
Vulkan pozostawia wszystko Tobie, ponieważ jesteś odpowiedzialny za wszystkie aspekty korzystania z Vulkan w swojej aplikacji. Nie ma ręki trzymającej, nie przeszkadza, pozwoli ci zastrzelić się w stopę lub powiesić rekurencyjną pętlę!
Nie oznacza to, że początkujący lub nowicjusze w tej dziedzinie nie powinni uczyć się wulkanu, ale sugeruję im to: Najpierw naucz się OpenGL i DirectX, aby zmoczyć stopy, aby zobaczyć, jak Podstawowa aplikacja jest zbudowana tak, aby renderować prosty trójkąt lub wirujący sześcian. Zapoznaj się z ich interfejsami API i powtarzającymi się wzorcami ich struktur. Ucząc się, że możesz uczyć się wulkanu równolegle w Parallel, w ten sposób możesz zobaczyć, jak każda z tych trzech osób wykonuje to samo zadanie, ale wiedzieć, jak robią to inaczej, możesz również porównać wyniki między różnymi interfejsami API i z tam możesz następnie wybrać, który z nich jest dla ciebie preferowany. Ta metoda dałaby Ci także inne narzędzie w skrzynce z narzędziami. Możesz nawet napisać aplikację obsługującą wszystkie 3 i mieć „
Ostatecznie to osoba decyduje o tym, którą drogą chce zejść, a stamtąd ich sukces będzie zależał od ich poświęcenia, ciągłych studiów, ciężkiej pracy, prób i błędów, a przede wszystkim od ich niepowodzeń. Jeśli nie zawiedziesz, to nie odniesiesz sukcesu! Odnosisz sukces tylko wtedy, gdy poniosłeś porażkę, znalazłeś swój błąd (błędy), naprawiłeś je, przeniosłeś się i wróciłeś i zrobił to wszystko od nowa!
źródło
Najpierw powinieneś nauczyć się OpenGL, ponieważ jest to standard grafiki na wielu platformach.
Nawet jeśli istnieje nowsza biblioteka, zrozumienie podstaw i praca z językiem używanym w całej branży jest bardzo ważna ... Zwłaszcza, że od tego czasu Vulkan nie będzie używany w dużych firmach.
Nikt nie chce od razu się przystosować i ostatecznie popsuć się niestabilnym szkieletem / biblioteką.
Musieliby zatrudnić / ponownie przeszkolić swoich obecnych programistów Open-GL i nie ma takiej potrzeby.
Słyszałem też, że OpenGL i Vulkan nie są dokładnie takie same. Słyszałem, że Vulkan jest API niższego poziomu i bliższym kodowi maszynowemu niż OpenGL.
Ta odpowiedź, którą właśnie znalazłem, wydaje się zawierać wiele świetnych informacji
https://gamedev.stackexchange.com/questions/96014/what-is-vulkan-and-how-does-it-differ-from-opengl
Kolejną rzeczą, którą należy rozważyć, jest problem, który wydarzył się z OpenGL 1.
W OpenGL 1 do OpenGL 2 wprowadzono GŁÓWNE zmiany, a ponieważ wiele osób używało OpenGL1, a sprzęt go obsługiwał, w niektórych aplikacjach / silnikach konieczna jest duża kompatybilność wsteczna, co czasami jest bardzo bolesne dla deweloperów .
Oprócz wsparcia język zmienił się tak bardzo, że trzeba było nauczyć się nowych rzeczy.
Stało się tak w przypadku frameworków takich jak JavaFX (od 1.x do 2.x) i Play! Framework (także 1.x do 2.x). Dokonaj zmian we frameworku, co oznacza, że musimy nauczyć się ... wszystkiego ...
Zasadniczo powinieneś poczekać, aż Vulkan będzie STABILNY. Oznacza to, że poczekaj, aż prawdopodobnie łatka 2.0. IT nie oznacza, że nie możesz nauczyć się podstaw Vulkanu, ale wiedz, że to może się zmienić. Zakładam, że grupa taka jak Kronos zapewniłaby bardzo stabilne API od samego początku, zwłaszcza że w Vulkan pracuje wielu inżynierów Nvidii i AMD, w tym najwyraźniej osoba z Nvidii najwyraźniej nadzorująca projekt, a także Baza Mantle; jednak, jak każde oprogramowanie, my, koderzy, zobaczymy, jak to działa od samego początku, ale wielu jest ostrożnych i czeka, aby zobaczyć, co się stanie.
źródło