Что в opengl означает «gl_FragDepth = 0.0»? - PullRequest
0 голосов
/ 11 мая 2018

Я сохраняю значение глубины с помощью фрагментированного шейдера в цветовом буфере основного буфера кадров (в «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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...