gpt4 book ai didi

android - fragment 着色器似乎不准确地 floor()

转载 作者:行者123 更新时间:2023-11-30 03:16:44 26 4
gpt4 key购买 nike

我正在尝试在我的 fragment 着色器中插入坐标。不幸的是,如果靠近上边缘,fVertexInteger 的内插值似乎会向上舍入而不是向下倾斜。这发生在大约 fVertexInteger >= x.97 之上。

例子:

  • floor(64.7) 返回 64.0 --> 正确

  • floor(64.98) 返回 65.0 --> 不正确

同样的情况发生在 x.0 上方的天花板收盘价上,其中 ceil(65.02) 返回 65.0 而不是 66.0.

问:有什么解决办法吗?

注意:

  • GL ES 2.0 与 GLSL 1.0
  • 我的硬件上的 fragment 着色器不支持 highp float
  • 平面变化不是解决方案,因为我正在绘制 TRIANGLE_STRIP 并且无法重新声明引发顶点(仅限 OpenGL 3.2+)

fragment 着色器:

varying float fVertexInteger;
varying float fVertexFraction;
void main() {

// Fix vertex integer
fixedVertexInteger = floor(fVertexInteger);

// Fragment color
gl_FragColor = vec4(
fixedVertexInteger / 65025.0,
fract(fixedVertexInteger / 255.0),
fVertexFraction,
1.0 );

}

最佳答案

我完全不知道 mediump float 的精度是多少实际上是在 Android 上的 OpenGL ES 中,但最可能的解释是,文字(或实际代码中的不同值)64.98已经四舍五入为 65 (使用最接近的四舍五入)首先,在它被放入 floor 之前.

关于android - fragment 着色器似乎不准确地 floor(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19950979/

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