Tím zájmenem "tomto" myslíš co -- jazyk, knihovnu, operační systém?
„Nechtěj, co není, a chtěj, co je, a budeš spokojen.“
1. 8. 2022, 08:25 editováno autorem komentáře
Vítejte ve světě blízko železa. Když se potřebujete pohybovat na téhle úrovni, tak holt nemáte tu složitost schovanou.
Tak jednodušší "jazyk" to asi je. A teď hurá na GPU s ASM!
Vulkan API je C, můžete jít tedy ještě níže, ale kratší to nebude.
Holt tohle je daň za flexibilitu, ale to už psal autor v původních článcích.
Oproti OpenGL je to ukecané, toť pravda.
2. 8. 2022, 17:18 editováno autorem komentáře
To určitě ne. Ta složitost totiž není v jazyce. V jiných jazycích vypadá GPU programování +- stejně hnusně, protože je to furt variace na téma "Vyplním 250 parametrů, strčím příkaz do fronty".
A jeden zásadní rozdíl oproti programování v ASM je ten, že tady už naprosto není možné udržovat iluzi toho, že se nějaké instrukce vykonávají jedna po druhé. :)
Naprosto souhlasím s uetoyo a Jiřím Havlem!
A ještě doplním k celé diskuzi: Být blízko železa má své nevýhody, tedy mnoho kódu, jak již zmíněno. Ale má to i své výhody: máte perfektní kontrolu nad věcmi. Máte je doslova ve svých rukou. Dokonce si můžete i spočítat kdy se začíná rendrovat nový snímek na obrazovku. Když víte, že váš snímek se rendruje 6.6ms a snímky se přepínají po 16.6ms, můžete začít rendrovat 10ms po přepnutí předchozího snímku, nebo raději 8 a dát si dvě milisekundy rezervu. Budete tak mít nejnižší možnou latenci. Těsně před rendrováním pak můžete naposledy přečíst pohyb myši a případně ještě pootočit kamerou, takže budete mít nejrychlejší možnou odezvu kamery. Nejsem si vůbec jist, jak by se podobná věc dala implementovat v OpenGL. Nějaký guru by možná nějaký přístup našel (?), ale ve Vulkan to máme tak trochu v ceně zájezdu a "snadno" si to naprogramujeme dle vlastní potřeby.
Co se týká glfw zmíněné v této diskuzi a SDL2 zmíněné ve kterési dřívější diskuzi, bude-li zájem, mohu zvážit doplnit i tyto platformy. Sám potřebuji integrovat Vulkan rendering do Qt, takže můžeme zvážit i tuto platformu. Filozofie tohoto tutoriálu je neomezit člověka na konkrétní knihovnu (glfw, SDL2,...), ale dát mu svobodu použít, co se mu zlíbí, co potřebuje nebo co mu nejvíce vyhovuje. Beru tyto díly mimo jiné také jako "zásobárnu" kódu pro všechny, kteří pracují na různých platformách, takže si vezmou právě ten kód, který potřebují.
Dobry den.
Zasa dakujem za tutorial. Mal som mierne problemy s kompilaciou, cmake sa stazoval na nejake "policy" a nepoznal prikaz "IN_LIST". Co som pochopil ako bezbecnostne opatrenia (?) a ze pre pouzitie urcitych prikazov je mu ich treba povolit. Kompilacia sa podarila pridanim
if(COMMAND cmake_policy)
cmake_policy(SET CMP0057 NEW)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
na zaciatok "CMakeLists.txt" (da sa to obist aj pridanim parametrov k cmake prikazu).
Ale ine som chcel. Mam otazku. Po spusteni mi vykreslilo okno, to ale bolo nedekorovane. Co ma zmiatlo, lebo na Vasom obrazku na konci dekoracie boli. Od coho to zalezi ci budu dekoracie, ci nie?
Dakujem.