Популярный способ использования шейдеров GLSL в WebGL, по-видимому, заключается в том, чтобы встраивать их в основной HTML-файл.Вершинные и фрагментные шейдеры встроены в такие теги, как:
<script id="shader-fs" type="x-shader/x-fragment">
Это то же соглашение, которое я вижу в примерах WebGL на странице Mozilla Developer Network.
Это отлично работает для простых приложений, но если у вас сложное приложение с несколькими шейдерами, HTML-файл загромождается.(Я продолжаю редактировать неправильный шейдер!) Также, если вы хотите повторно использовать ваши шейдеры, эта схема неудобна.
Поэтому я думал о том, чтобы поместить эти шейдеры в отдельные файлы XML и загрузить их с помощью XMLHttpRequest ().Затем я увидел, что у кого-то еще есть такая же идея:
http://webreflection.blogspot.com/2010/09/fragment-and-vertex-shaders-my-way-to.html
Мне нравится предложение использовать файлы .c, поскольку это дает вам подсветку синтаксиса и другие удобства редактора для GLSL.
Но проблема с вышеуказанным подходом заключается в том, что (насколько я понимаю) XMLHttpRequest () не может загрузить локальный файл .c - т.е. на стороне клиента - пока вы разрабатываете и тестируете приложение WebGL.Но во время этого процесса загружать его на сервер сложно.
Так что, если я хочу, чтобы шейдеры не попадали в html-файл, является ли единственной возможностью встроить их в код в виде строк?Но это затруднит написание и отладку ...
Буду признателен за любые предложения по управлению несколькими шейдерами GLSL в приложениях WebGL.
С уважением
Редактировать (05 мая 2011 г.)
Поскольку я использую Mac для разработки, я решил включить сервер Apache и поставить свой webglкод под http://localhost/~username/. Это обходит проблему с файлом: протокол отключен во время разработки.Теперь код загрузки файла javascript работает локально, поскольку используется http: вместо file :.Просто подумал, что я это здесь выложу на случай, если кто-нибудь найдет это полезным.