#javascript #html5 #графика #webgl #glsl
В книге К. Мацуда, Р. Ли - WebGL. Программирование трехмерной графики везде используется
встроенные шейдеры. Как подключить шейдеры из файлов. Решение описанное в этой же книге
не заработало:
XMLHttpRequest cannot load file:///D:/Development/WebGL/DrawPoint/DrawPointVertesShader.gls.
Cross origin requests are only supported for protocol schemes: http, data, chrome,
chrome-extension, https, chrome-extension-resource.loadShaderFile @ ShaderUtilities.js:12
XMLHttpRequest cannot load file:///D:/Development/WebGL/DrawPoint/DrawPointFragmentShader.gls.
Cross origin requests are only supported for protocol schemes: http, data, chrome,
chrome-extension, https, chrome-extension-resource.
Некоторые предлагали поднимать сервак и оттуда брать. Но это не годится так как пишется
игра и конечно игра должна работать без сучка и задоринок у пользователя. Есть ли какой-нибудь
простой механизм?
Ответы
Ответ 1
Истоки Вашей проблемы в том, что с веб страниц, которые были открыты по протоколу file:// не удается получить по этому-же протоколу ресурсы, которые лежат рядом на диске. Эта возможность в браузерах отключена из соображений безопасности. Однако, Вы совершенно не обязаны подключать шейдеры как отдельные файлы. Вам необходимо лишь передать компилятору шейдеров их исходный код, в виде строк, а как вы будете хранить и получать эти строки в том месте где она нужны - дело десятое. Таким образом Вы можете создать одну html страницу с webgl приложением, которое будет открываться локально и без веб-сервера. Можно держать glsl код прямо в javascript секциях в виде строк:
Комментариев нет:
Отправить комментарий