Bundle Shader source с приложением? - PullRequest
2 голосов
/ 04 мая 2011

Мне просто интересно, как связать исходные файлы моего шейдера GLSL (для OpenGL ES (iOs) / OpenGL с GLUT (Mac / Windows)) с моим приложением. Как чисто текстовые файлы, они могут быть легко изменены каждым пользователем моего программного обеспечения, и я боюсь неопределенного поведения ... В iOS я просто использую XCodes «Copy Bundle Ressources» для своих шейдеров (и затем извлекаю их из Application Bundle) - есть ли похожая возможность с Visual Studio?

Или для этого есть даже лучший кросс-платформенный способ?

Ответы [ 2 ]

4 голосов
/ 04 мая 2011

GLSL-шейдеры - это чистые текстовые файлы (или текстовые фрагменты, как вы хотите на них смотреть).Нет никакого способа (кроме цифровой подписи ваших шейдеров и отказа от запуска, если подпись не совпадает), чтобы предотвратить тривиальное изменение ваших шейдеров в текстовом редакторе.(Конечно, вы можете сделать их нечитаемыми, кодируя их с помощью rot13-кодирования или помещая их все в файл .zip и переименовывая файл .zip во что-то другое, это не помешает кому-то определиться с тем, чтобы найти ваши шейдеры, ноэто, вероятно, будет сдерживать 90% средних пользователей.)

Но опять же, если люди делают редактируют ваши шейдеры и это приводит к неопределенному поведению ... неудача для них.Вы знаете, есть определенная фракция людей, которые чувствуют необходимость редактировать все, что читается и редактируется человеком.Хорошо, это их проблема, если они сломают свою установку.Вы не можете предотвратить глупость людей.

В последних версиях OpenGL есть бинарное расширение шейдера, но оно не предназначено для использования таким образом, чтобы решить вашу проблему.Он просто предназначен в качестве механизма кэширования для ускорения времени компиляции / компоновки при последующих запусках.Он не подходит для распространения «двоичных файлов шейдеров».

1 голос
/ 11 мая 2011

Как вы знаете, даже в OSX шейдеры находятся в «чистом тексте», комплект приложений - это обычный каталог, в котором находится папка Resource /, в которую помещаются ваши шейдеры.

...