В настоящее время я занимаюсь разработкой приложения на основе WebGL, и у меня возникают некоторые проблемы с хранилищем шейдеров…
В большинстве примеров я вижу, что шейдеры записываются в виде открытого текста в самом файле xHTML.Однако это загромождает файл и не разрешает кэширование.Кроме того, их неудобно редактировать и использовать повторно.Наличие одного файла на шейдер является лучшим для организации.Я все еще могу вставить их с помощью PHP в сгенерированный вывод, но это увеличивает размер страниц и не может эффективно кэшироваться.
Другое решение - это выборка каждого шейдера с помощью XmlHttpRequest, но ябоюсь, что количество HTTP-запросов на загрузку новой страницы (особенно если у вас десятки шейдеров!) может быстро стать проблемой производительности.
Наконец, я подумал о том, чтобы динамически поместить все шейдеры в файлзатем загрузите его с помощью XmtHttpRequest.Это только один запрос для одного файла, который может кэшироваться локально браузером.Тем не менее, мой JS не так хорош, и я не знаю, как мне это сделать.Я собирал файл из шейдеров в PHP и извлекал их в Javascript.
Но как?Я думал об использовании XML или JSON для хранения заголовков в большом файле, и мне нужна помощь по коду Javascript для их извлечения.Спасибо!
Мой сгенерированный PHP файл шейдера будет выглядеть так:
<vertex-shader id="shaderA">
…shader code…
</vertex-shader>
<fragment-shader id="shaderB">
…etc…
</fragment-shader>
Или:
{ "vertexshaderA": "…shader code…",
"fragmentshaderA": "…etc…" }