Jak używać # include w GLSL wsparcie ARB shading language include

Nie chcę używać makra #include do dołączania plików shader w glsl i słyszałem, że jest ARB_shading_language_include rozszerzenie obsługuje makro #include. Czy ktoś może mi dać fragment kodu pokazujący jak używać makra #include?

 17
Author: toolchainX, 2012-05-25

2 answers

Pierwszą rzeczą, którą musisz zrozumieć o shading_language_include jest to, czym nie jest . Nie jest to " I #include A plik z dysku."OpenGL nie wie, czym są pliki; nie ma pojęcia o systemie plików.

Zamiast tego musisz wstępnie załadować wszystkie pliki, które chcesz dołączyć. Więc masz łańcuch shadera i nazwę pliku, z którego załadowałeś łańcuch. Zasadniczo musisz zbudować wirtualny system plików w OpenGL.

Używasz glNamedStringARB aby przesłać łańcuch znaków do wirtualnego systemu plików. Nazwa łańcucha jest jego pełną ścieżką.

Po zbudowaniu wirtualnego systemu plików, musisz zainicjować rozszerzenie dla każdego skompilowanego shadera.

#version MY_OPENGL_VERSION //Whatever version you're using.
#extension GL_ARB_shading_language_include : require

Po #extension oświadczeniu, możesz #include według własnego uznania.

 38
Author: Nicol Bolas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-24 01:41:52

Chciałbym odpowiedzieć na pytanie 0xbadf00d, ale brak reputacji.

From ARB / shading_language_include.txt : "<type> musi być SHADER_INCLUDE_ARB "

 2
Author: nils,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-20 13:46:49