gpt4 book ai didi

ios - 使用与 OpenGL 版本中相同的代码移动 OpenGL ES 纹理

转载 作者:行者123 更新时间:2023-11-29 11:40:20 24 4
gpt4 key购买 nike

在我的 Windows 代码 (OpenGL 4) 中,我用这个来计算片段着色器中的纹理位置:

vec2 pixel = "some equation"
vec2 textureSize = vec2(512.0, 512.0);
vec2 texel = floor(pixel + vec2(0.5)) + vec2(0.5);
texel /= textureSize

如果我在 iOS (OpenGL ES 3.0) 上运行这段代码,我的整个图像会在 x 和 y 方向上发生部分偏移。我试图删除 vec2(0.5) 并只使用

vec2 texel = floor(pixel + vec2(0.5))

但它更不正确。

ES 中发生了什么?

最佳答案

大概是着色器精度。尝试添加:

precision highp float;

在片段着色器的顶部。

如果没有该语句,并且在单个变量上没有精度限定符,那么您的数学运算可能(取决于实现)使用半精度 float 而不是单精度(16 位 float 而不是 32 位 float ) ),并且缺乏精确性可以解释您所看到的伪像。

请注意,OpenGLES 实现可以自由地在片段着色器中不支持 highp,因此这种方法可能不适用于所有地方。但是,它在所有 iOS 设备上都受支持,这就是您所说的。

关于ios - 使用与 OpenGL 版本中相同的代码移动 OpenGL ES 纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47001102/

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