gpt4 book ai didi

c++ - 确保 GLSL 兼容性

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:53 26 4
gpt4 key购买 nike

如何确保 GLSL 着色器与大多数现代显卡兼容?

我有一个软件,我使用 here 中的 GLSL 代码.但是,即使我已将 #version 120 添加到我的最终着色器的开头并确保它可以编译,但在某些用户计算机上,他们会遇到着色器编译错误(即使它们支持 OpenGL 3.2)。

有什么工具可以用来“验证”或尝试使用不同的“着色器编译器”进行编译吗?

最佳答案

没有用于验证着色器的工具。即使有,它对您也没有用,因为如果不在您想要的硬件上运行,“有效”的着色器有什么用?你可以随心所欲地正确,但如果你的硬件拒绝它,即使你在技术上是正确的,你的着色器仍然不会运行。

如果特定版本的着色器在一个目标(称之为 A)上编译而不在另一个目标(称之为 B)上编译,这可能是由于以下问题之一:

  1. 目标 A 没有正确实现 GLSL。它允许您编译规范不允许的内容。更合规的目标 B(或者至少,不合规)拒绝您的着色器,因为您的着色器不符合规范。
  2. 目标 B 不符合规范。您正在为它提供一个合法的着色器,但它正在拒绝它。
  3. 目标 B 不支持您的着色器使用的 GLSL 版本(这不太可能),除非:
  4. 目标 B 使用 OpenGL 核心规范 3.2 或更高版本。 GLSL 1.20 着色器无法在核心 3.2 OpenGL 实现上运行。

#1 如果您仅在 NVIDIA 硬件上开发,则更有可能发生。 NVIDIA 在 OpenGL 规范上玩得有点松散。他们会在这里和那里采取一些自由,消除规范中提到的一些令人不快的事情。它可以提供更流畅的开发人员体验,但如果着色器未在竞争对手上运行,它还有助于让供应商继续使用 NVIDIA 硬件 ;)

#3 几乎不存在,但有明显的异常(exception)。您链接到 Photoshop 着色器,所以我认为您无法控制 OpenGL 上下文的创建和管理。即便如此,我还是非常怀疑 Photoshop 会使用核心上下文;他们有太多需要向后兼容的着色器。

处理此问题的最佳方法是在 AMD 和 NVIDIA 硬件上进行测试(如果需要,还可以在 Intel 上运行)。您可能不需要测试所有可能的系统组合,但可以选择 Radeon HD 卡和 GeForce 200 或更好的显卡。它们甚至不必是高端的。

关于c++ - 确保 GLSL 兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7021888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com