是在GPU还是CPU上编译OpenGL着色器?GPU制造商如何改变二进制输出?

bbo*_*sak 13 opengl shader compilation

第一; 如何编译OpenGL着色器?它们是在CPU或GPU上编译的,还是因实现而有所不同?不同的供应商有不同的二进制输出; 如果是这样,是否有可能在另一个GPU上交叉编译一个GPU类型的二进制文件?我正在开发一款我计划在英特尔GFX芯片,ATI卡和NVidia卡上运行的游戏.我宁愿只发送着色器的二进制部分,而不必在客户端计算机上编译源代码.这可能吗?着色器编译过程如何工作?

bdo*_*lan 14

一般而言,编译过程在CPU上执行.但是,输出的不同之处不仅在于供应商,还在于模型.因此,必须在用户的机器上重新编译着色器,以便与用户可能正在使用的任何GPU型号保持兼容(包括在您编写游戏时可能不存在的GPU模型!)

  • 是.你可以尽量做到不太明显的混淆的内容您的着色器(例如,加密它,所以它不会以明文显示,删除注释和重命名当地人等),但你必须有到底该源代码. (2认同)