我想知道是否有办法阻止“OpenGL Profiler”或“Instruments”附加到我的应用程序,因为它显示了一些着色器/进程我想保持隐藏。
答案 0 :(得分:3)
没有办法做到这一点。您可以做的最好的事情就是对着色器进行模糊处理,以便它们难以破译,例如使用一些代码可以为所有方法和变量提供非描述性名称。
您无法阻止某人捕获着色器和纹理内容的原因是您必须将它们传递给OpenGL API。理论上,有人可以使用简单地将着色器/纹理保存到其硬盘驱动器的实现来替换API中的适当方法。你无法知道这是否已经完成。
答案 1 :(得分:0)
我的方法是应用程序中的隐藏着色器,因此如果用户检查应用程序的内容,他将找到* .vsh和* .fsh,但他将无法读取它。我在编译之前解密它们。
在我的渲染过程中,我添加了
#if RELEASE
CGLSetGlobalOption(kCGLGOComment, (long) "No profiler in release scheme");
#endif
通过添加它,当openGL探查器尝试附加时,应用程序将崩溃。因此着色器将不可见。