Почему gl_FragColor в opengl отличается от Colorbuffer? - PullRequest
0 голосов
/ 07 мая 2018

Я хотел бы прочитать с помощью glReadPixels () значение из цветового буфера, которое я ранее писал в Fragmenthader через gl_FragColor. Это работает в среднем 10 раз, затем возникает ошибочное значение (1 = 255).

#version 420
uniform vec2 screenXy;
uniform vec2 screenSize;
out highp vec4 fragColor;

void main(void) {

if((int(gl_FragCoord.x) == int(screenXy.x)) && ((int(screenSize.y - 1) - int(gl_FragCoord.y)) == int(screenXy.y))) {
    fragColor.r = 0.5; // any value
} else {
    fragColor = vec4(1, 1, 1, 1.0);
}

Я отправляю координаты xy мыши в fragementshader (screenXy). Если выбранный пиксель находится в строке, я записываю значение (например, 0,5) в буфер цвета. Теперь я наблюдаю, что иногда значение равно 1 (= 255) вместо 0,5 (= 128).

GLfloat zc[4]; // from color buffer
m_func->glReadPixels(xy.x(), (m_pFbo->height() - 1) - xy.y(), 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, z);
qDebug() << "z0 " << z[0];

Я вижу это поведение на win10 и android. У кого-нибудь есть идеи, что я делаю не так?

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