我正在考虑使用 OpenGL ES 2.0 为 iOS 设备发布一堆 GPGPU 功能作为框架。
在 XCode 中捕获 OpenGL ES 帧时,我可以看到正在使用的着色器的代码。有没有办法避免这种情况发生?我已经尝试在链接 OpenGL ES 程序时glDeleteShader
和glDetachShader
之后删除和分离着色器,但代码仍然被捕获。
我不是在寻找防弹选项(可能不存在),只是让获取代码比按下按钮更困难一些。
谢谢你。
调试器必须从对 的调用中捕获输入,glShaderSource
编译后实际的着色器源永远不会存储在 VRAM 中。我想不出任何直接克服这个问题的方法。调用glShaderSource
是必需的,因为 OpenGL ES 不支持预编译的着色器二进制文件。
我建议混淆原始着色器代码,可能使用编译时宏,甚至是一个脚本来打乱变量名称等(注意attribs
它们uniforms
会影响到应用程序代码的链接)。
这是一个用于混淆/最小化着色器代码的工具。我相信它是为 WebGL 构建的,因此它可能无法完美运行。http://glslunit.appspot.com/compiler.html