Сглаживание OpenGL с помощью glAccum и glRasterPos

Моя задача: сделать алгоритм взвешенного сглаживания с буфером накопления в OpenGL. Другими словами, у меня есть массив пикселей, который мне нужно сдвинуть на один пиксель во всех направлениях с помощью множителей.

Моя проблема: я не очень понимаю, что делает мой код.

while(!glfwWindowShouldClose(window)) {
glReadBuffer(GL_FRONT);
glDrawBuffer(GL_FRONT);
glDrawPixels(800, 800, GL_RGBA, GL_UNSIGNED_BYTE, pixels);

glAccum(GL_LOAD, 1.0);
glRasterPos2d(1.0, 0.0);
glAccum(GL_ACCUM, 2.0);
glRasterPos2d(0.0, 1.0);
glAccum(GL_ACCUM, 2.0);
glAccum(GL_RETURN, 1.0);

glfwPollEvents();
glfwSwapBuffers(window);
}

Как я понимаю, glRasterPos меняет позицию «курсора», поэтому с его изменением
моя картинка должна сместиться на один пиксель вправо и вниз. Но я не вижу никаких результатов сглаживания, просто мигание моей формы (массив пикселей содержит только белые пиксели). Я понимаю, что я должен сделать GL_ACCUM по всем девяти направлениям. И я должен использовать именно glRasterPos для этого.
Что я не понимаю с glAccum и glRasterPos?

0

Решение

призвание glRasterPos ничего не перемещает, он просто устанавливает текущую позицию — рассматривайте это как присвоение значений внутренним posx а также posy переменные. Вы должны нарисовать ваше изображение снова (позвоните glDrawPixels) чтобы увидеть эффект этого звонка.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector