将着色器源与应用程序捆绑在一起?

Con*_*tin 2 shader glsl

我只是想知道如何将我的 GLSL 着色器源文件(对于 OpenGL ES(iOs)/OpenGL with GLUT (Mac/Windows))与我的应用程序捆绑在一起。作为纯文本文件,我的软件的每个用户都可以轻松更改它们,而且我担心未定义的行为......在 iOS 上,我只是为我的着色器使用 XCodes“Copy Bundle Ressources”(然后从应用程序包中检索它们) ) - Visual Studio 是否有类似的可能性?

或者有没有更好的跨平台方式来做到这一点?

Dam*_*mon 5

GLSL 着色器纯文本文件(或文本片段,无论您想以何种方式查看)。没有办法(除了对着色器进行数字签名并在签名不匹配时拒绝运行之外)阻止用户在文本编辑器中随意修改着色器。(当然,您可以通过对它们进行 rot13 编码或将它们全部放入 .zip 文件并将 .zip 文件重命名为其他内容,使它们变得不可读,这不会阻止决心找到您的着色器的人这样做,但是它可能会阻止 90% 的普通用户。)

但话又说回来,如果人们确实编辑了您的着色器并导致未定义的行为......他们运气不好。你知道,有一些人觉得被敦促编辑所有人类可读和可编辑的东西。好吧,如果他们破坏了他们的安装,那是他们的问题。你不能阻止人们变得愚蠢。

最新版本的 OpenGL 上有着色器二进制扩展,但它的用途并不是用来解决您的问题。它只是作为一种缓存机制来加速后续运行的编译/链接时间。它不适合分发“着色器二进制文件”。