2011-12-15 125 views
0

我在我的游戏和应用程序中有很多着色器,我目前使用一个简单的程序来制作着色器并生成一个Java类,它将文本放入一个StringBuilder中,一次一个字符,如果有人扭转了工程师的情况,就找不到任何东西有什么技术可以遮蔽着色器资源?

这感觉不对,但它确实能让他们远离视线,但我并不幻想他们非常安全。

我在预编译时看到了一个问题,没有答案。还有什么可以做的?

回答

1

到目前为止,我所看到的,在考虑到着色器通常是非常小的方案最好的解决办法,就是将它们嵌入在你的代码中你刚才说你的方式。

这很安全。

考虑到,如果有人想要把你的着色器,将被来自GPU为之倾倒做到这一点,显然是远远要复杂得多,但它可以做到的(谈到逆向工程)。

加密是一个选项,但它只能保护着色器的本地存储,我仍然可以转储程序的内存刚刚解密后。

最后但并非最不重要的是,一般预先编译着色器并不方便,考虑到您正在开发的平台,GPUS和驱动程序实现的范围很广泛,这更加真实。

回到关于预编译着色器的其他问题,OpenGL Gold Book(OpenGL ES 2.0编程指南)的第350页有一个很好的解释,它解释了为什么你不应该这样做。

其中的一个原因是,设备供应商可以随意二进制着色器存储在他们喜欢的方式。

我希望它有帮助。

块引用

0

一个选项是加密文件。看看Cipher班。

+1

无论是有机磷农药的解决方案,也没有加密解决“问题”为已任OPENGL API接口/调用检查员将显示组装或未加密的文字,你将其发送到编译器和做运行时解密的着色器听起来像一个低fps的聚会。 – krs 2011-12-17 09:25:21