测试着色器的兼容性
Testing compatibility of shaders
当我在我的机器上开发着色器代码时,我经常发现着色器在我的机器上运行良好,但在其他显卡、驱动程序、操作系统等上却不能。
如何实现着色器的兼容性?
我看到了一些方法:
在许多不同的系统上进行测试。但是选择哪些系统呢?在每个 OS 和每个驱动程序上测试每张卡是不现实的。也许我们可以假设供应商关心向后兼容性?在这种情况下,使用旧卡和驱动程序进行测试可能就足够了。
向驱动程序询问特定版本和核心配置文件。这有点帮助,但驱动程序似乎非常宽松,允许我编写规范中没有的代码。
检查代码是否与特定规范严格兼容的代码检查器。周围没有看到这样的工具。
不要费心等待来自 users.Yet 的错误报告驱动程序生成的错误消息相当糟糕,观察到的行为可能像黑人一样缺乏洞察力屏幕.
我的目标是 Win/Linux/OSX 平台。不是游戏机。
Khronos 已发布 OpenGL / OpenGL ES Reference Compiler,可用于验证着色器的源代码。来自网站:
The primary purpose of the reference compiler is to identify shader
portability issues.
当我在我的机器上开发着色器代码时,我经常发现着色器在我的机器上运行良好,但在其他显卡、驱动程序、操作系统等上却不能。
如何实现着色器的兼容性?
我看到了一些方法:
在许多不同的系统上进行测试。但是选择哪些系统呢?在每个 OS 和每个驱动程序上测试每张卡是不现实的。也许我们可以假设供应商关心向后兼容性?在这种情况下,使用旧卡和驱动程序进行测试可能就足够了。
向驱动程序询问特定版本和核心配置文件。这有点帮助,但驱动程序似乎非常宽松,允许我编写规范中没有的代码。
检查代码是否与特定规范严格兼容的代码检查器。周围没有看到这样的工具。
不要费心等待来自 users.Yet 的错误报告驱动程序生成的错误消息相当糟糕,观察到的行为可能像黑人一样缺乏洞察力屏幕.
我的目标是 Win/Linux/OSX 平台。不是游戏机。
Khronos 已发布 OpenGL / OpenGL ES Reference Compiler,可用于验证着色器的源代码。来自网站:
The primary purpose of the reference compiler is to identify shader portability issues.