我的游戏和应用程序中有许多着色器,我目前使用我制作的一个简单程序来获取着色器并生成一个 java 类,该类将文本放入 StringBuilder 中,一次一个字符,因此找不到文本搜索如果有人逆向工程师的话。
感觉不对,但它确实可以让它们远离视线,但我并不幻想它们非常安全。
我看过一个关于预编译的问题,没有答案。还有什么可以做的?
我的游戏和应用程序中有许多着色器,我目前使用我制作的一个简单程序来获取着色器并生成一个 java 类,该类将文本放入 StringBuilder 中,一次一个字符,因此找不到文本搜索如果有人逆向工程师的话。
感觉不对,但它确实可以让它们远离视线,但我并不幻想它们非常安全。
我看过一个关于预编译的问题,没有答案。还有什么可以做的?
考虑到着色器通常是非常小的程序这一事实,到目前为止我所看到的最佳解决方案是以您刚才所说的方式将它们嵌入到您的代码中。
这是相当安全的。
考虑一下,如果有人想拿你的着色器,会通过从 GPU 中转储它来实现,显然它要复杂得多,但它可以完成(谈论逆向工程)。
加密是一种选择,但它只保护着色器的本地存储,我仍然可以在解密后转储程序的内存。
最后但并非最不重要的一点是,通常预编译着色器并不方便,考虑到您正在使用的平台上存在大量 GPUS 和驱动程序实现,情况就更是如此。
回到关于预编译着色器的其他问题,OpenGL Gold Book(OpenGL ES 2.0 编程指南)的第 350 页有一个很好的解释,解释了为什么不应该这样做。
原因之一是设备供应商可以自由地以他们喜欢的方式存储二进制着色器。
我希望它是有帮助的。
块引用
一种选择是加密文件。看看Cipher
课堂。