2

我正在考虑使用 OpenGL ES 2.0 为 iOS 设备发布一堆 GPGPU 功能作为框架。

在 XCode 中捕获 OpenGL ES 帧时,我可以看到正在使用的着色器的代码。有没有办法避免这种情况发生?我已经尝试在链接 OpenGL ES 程序时glDeleteShaderglDetachShader之后删除和分离着色器,但代码仍然被捕获。

我不是在寻找防弹选项(可能不存在),只是让获取代码比按下按钮更困难一些。

谢谢你。

4

1 回答 1

0

调试器必须从对 的调用中捕获输入,glShaderSource编译后实际的着色器源永远不会存储在 VRAM 中。我想不出任何直接克服这个问题的方法。调用glShaderSource是必需的,因为 OpenGL ES 不支持预编译的着色器二进制文件。

我建议混淆原始着色器代码,可能使用编译时宏,甚至是一个脚本来打乱变量名称等(注意attribs它们uniforms会影响到应用程序代码的链接)。

这是一个用于混淆/最小化着色器代码的工具。我相信它是为 WebGL 构建的,因此它可能无法完美运行。http://glslunit.appspot.com/compiler.html

于 2013-08-05T03:23:18.263 回答