Я пытаюсь восстановить изображение, которое было визуализировано по столбцу.
Счетчик cpt_x является шагом в цикле от 0 до 4.
При каждом проходе отображается только один пиксель из 5, каждые 5 пикселей.
Таким образом, во время первого прохода отображаются пиксели 0, 5, 10, 15, 20, 25 и т. Д. => cpt_x = 0
, затем во втором проходе отображаются пиксели 1, 6, 11, 16, 21, 26 и т. Д. => cpt_x = 1
на третьем проходе отображаются пиксели 2, 7, 12, 17, 22, 27 и т. Д. => cpt_x = 2
в четвертом проходе отображаются пиксели 3, 8, 13, 18, 23, 28 и т. Д. => cpt_x = 3
в пятом проходе, пиксели 4, 9, 14, 19, 24, 29 и т. Д. => Cpt_x = 4
Последний шаг восстанавливает изображение, так как все пиксели были созданы.
Генерация изображений проходит хорошо, я даже могу восстановить окончательное изображение после смещения копии в текстуре буфера, используя:
glCopyTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, cpt_x, 0, 1920, 1080);
Поскольку теперь мне нужны разные значения cpt_x для каждого пикселя, я больше не могу использовать этот трюк.
Я пытаюсь восстановить изображение в фрагментном шейдере, но ничего не отображается.
Цель этого шейдера - скопировать пиксели изображения в их местоположения, оно будет вызываться 5 раз при каждом поколении 1/5 части окончательного изображения, и копировать несколько пикселей cpt_x в буфер конечного изображения.
Первые пиксели первой строки должны быть собраны следующим образом:
1-й пиксель изображения 1, 1-й пиксель изображения 2, [...], 1-й пиксель изображения 5, 2-й пиксель изображения 1, 2-й пиксель изображения 2, [...], 2-й пиксель изображения 5 и т. Д.
#version 330 core
out vec4 FragColor;
in vec2 TexCoords;
uniform int max_x; // equal to 4
uniform int cpt_x; // from 0 to 4
uniform sampler2D my_texture; // this texture contain only 1 column filled every 5 pixels
int coord_x = floor(gl_FragCoord.x / max_x);
vec2 pixel_size = 1.0 / vec2(textureSize(my_texture, 0));
vec4 res = texture(my_texture, vec2(coord_x + cpt_x * pixel_size.x, TexCoords.y));
if (texOneView.a != 0.0)
FragColor = res;
Как я уже сказал, ничего не отображается, я подозреваю, что созданиеordin_x, так как я думаю, что это проблема координат.