Я сохраняю значение глубины с помощью фрагментированного шейдера в цветовом буфере основного буфера кадров (в «opengl es» нет способа прочитать буфер глубины с помощью glReadPixels ()).Кроме того, мне нужна максимальная точность 32 бит, поэтому я использую rgba цветового буфера.Но я понял, что при использовании альфа-канала результаты не всегда верны, возможно, из-за некоторых операций после фрагментирования.Работает следующее:
- установить fragColor.a = 1 (но тогда я теряю один канал) или
- установить gl_FragDepth = 0.0 (отлично работает и с alpha! = 1)
fragShader
void main(void) {
gl_FragDepth = 0.0;//gl_FragCoord.z;
}
Но почему это работает, если значение глубины в буфере глубины всегда равно 0,0?