使用glAccum和glRasterPos进行OpenGL抗锯齿处理

时间:2017-04-09 04:33:59

标签: c++ opengl graphics antialiasing

我的任务:在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不了解什么?

1 个答案:

答案 0 :(得分:0)

调用posx不会移动任何内容,只会设置当前位置 - 将其视为为内部posyglDrawPixels变量分配值。您应该再次绘制图像(调用{{1}})以查看此调用的效果。