繁体   English   中英

一些IOS设备中的样本GL_DEPTH24_STENCIL8深度纹理错误

[英]sample GL_DEPTH24_STENCIL8 depth texture error in some IOS device

我有一个深度纹理GL_DEPTH24_STENCIL8 (或GL_DEPTH_COMPONENT24 ),我可以在某些设备(iPhone5s iPad1)上正确采样该纹理,但是会因某些无效像素而失败。 以下是绑定的gpu纹理(深度)和xcode捕获的格式信息:

绑定深度纹理 在此处输入图片说明

请注意,我已将值裁剪为[0.999,1],因为同质深度大部分位于集合中。 我正在采样纹理并将其值也裁剪到我的着色器中。

uniform sampler2D tex0;
varying mediump vec2 TexCoord0;
void ps_main()
{
  float bias = 0.0;
  lowp vec4 zb = texture2D(tex0, TexCoord0, bias);
  const mediump float mag = 20.0;
  mediump float linearz = (zb - 0.999) / (1.0 - 0.999)
  gl_FragColor = vec4(linearz, linearz, linearz, 1.0);
}

并且此着色器在上述设备上给出了错误的结果: 在此处输入图片说明

设备和驱动程序信息为:

Driver: OpenGLES2
Description: Apple A8 GPU
Version: OpenGL ES 2.0 Apple A8 GPU - 77.14
Vendor: Apple Inc.
Width: 2048, Height: 1536, BitDepth: 32

这个问题有什么线索吗? 还是其他一些调试建议?

您所依赖的精度超出了API保证的精度。 例如,变量zblowp ,它只能保证256个精度中的1个部分,但是您尝试在计算linearz的值时使用至少需要linearz计算中。

尝试将精度提高到highp以超过临界精度阈值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM