我只是想知道如何将我的GLSL着色器源文件(对于带有GLUT(Mac / Windows)的OpenGL ES(iOs)/ OpenGL)与我的应用程序捆绑在一起。作为纯文本文件,我的软件的每个用户都可以轻松更改它们,我害怕未定义的行为...... 在iOS上,我只是为我的着色器使用XCodes“Copy Bundle Ressources”(然后从Application Bundle中检索它们) - Visual Studio是否有类似的可能性?
或者是否有更好的跨平台方式,这样做?
答案 0 :(得分:4)
GLSL着色器是纯文本文件(或文本片段,无论您想要查看它的方式)。没有办法(除了对着色器进行数字签名并且如果签名不匹配则拒绝运行),以防止用户在文本编辑器中轻松修改着色器。 (当然你可以通过对它们进行编码或将它们全部放入.zip文件并将.zip文件重命名为其他内容来使它们变得难以理解,这不会阻止有人决定找到你的着色器这样做,但是它可能会阻止90%的普通用户。)
但话又说回来,如果人们做编辑你的着色器并导致未定义的行为......对他们来说运气不好。你知道,有一些人感到被要求编辑人类可读和可编辑的所有内容。好吧,如果他们破坏了安装,那就是他们的问题。你不能阻止人们变得愚蠢。
最新版本的OpenGL上有着色器二进制扩展,但它不能用于解决问题的方式。它仅用作缓存机制,以加快后续运行的编译/链接时间。它不适合分发“着色器二进制文件”。
答案 1 :(得分:1)
您知道,即使在OSX上着色器是“纯文本”,应用程序包也是一个普通目录,其中包含放置着色器的资源/文件夹。