【问题标题】:Any way to suppress a warning in GLSL?有什么方法可以抑制 GLSL 中的警告?
【发布时间】:2012-03-13 01:01:06
【问题描述】:

我的着色器将 int 隐式转换为浮点数,这会导致 C7011 警告。

int i = 1;
float f = i;

我不关心,也永远不会关心这个警告。但是,当尝试调试我的着色器时,我必须通过一堆这些警告才能找到错误。有没有办法抑制这些警告?

我尝试查找#pragma 的选项,但找不到任何内容。

提前致谢。

【问题讨论】:

  • 你试过float f = (float)i;吗?
  • @dark_charlie:这是 GLSL,而不是 C。这在 GLSL 中不起作用。
  • @NicolBolas 它在 HLSL 中运行良好,我认为它也可以在 GLSL 中运行 :)
  • 你可以在 GLSL 中构造一个浮点数:float f = float(i);

标签: glsl


【解决方案1】:

不确定这是否对您有很大帮助,但也许可以查看您正在使用的 glsl 版本的快速参考。看起来,根据在http://www.khronos.org/files/opengl42-quick-reference-card.pdf 找到的 4.20 GLSL 快速参考表的第 7 页,您可以使用 float f = float(i),以为我不在计算机上,我目前可以对其进行测试。

如果这不起作用,您可能需要查看同一参考表第 9 页上的 intBitsToFloat 函数。虽然它只存在于 glsl 3.3 及以上版本,但如果您使用的是该版本或更高版本,它可能会为您提供所需的转换。

【讨论】:

  • float(f) 有效。谢谢。我曾希望有一种在语法上不那么丑陋的方式来处理它。对于 float 到 int,会有精度损失,但是对于 int 到 float,动态范围的小幅损失似乎是编译器不应该抱怨的。我想事情就是这样。
猜你喜欢
  • 2019-05-05
  • 2011-06-27
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-04
  • 2010-09-16
  • 1970-01-01
相关资源
最近更新 更多