Я хотел бы прочитать с помощью 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.
У кого-нибудь есть идеи, что я делаю не так?