【问题标题】:Are OpenGL shaders compiled on the GPU or the CPU? How does binary output vary by GPU manufacturer?OpenGL 着色器是在 GPU 还是 CPU 上编译的? GPU 制造商的二进制输出有何不同?
【发布时间】:2011-11-04 22:46:26
【问题描述】:

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

【问题讨论】:

    标签: opengl compilation shader


    【解决方案1】:

    一般来说,编译过程是在 CPU 上执行的。但是,输出不仅因供应商而异,而且因型号而异。因此,必须在用户的机器上重新编译着色器,以保持与用户可能使用的任何 GPU 型号(包括您编写游戏时可能不存在的 GPU 型号!)的兼容性!

    【讨论】:

    • 大部分商业游戏都是这样的吗?
    • 是的。您可以尝试通过混淆着色器的内容来使其不那么明显(例如,对其进行加密以使其不会以纯文本形式显示、删除 cmets 和重命名本地变量等),但您最终必须拥有该源代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2015-03-31
    • 2017-04-16
    • 2021-04-24
    相关资源
    最近更新 更多