【问题标题】:OpenGL antialiasing with glAccum and glRasterPosOpenGL 抗锯齿与 glAccum 和 glRasterPos
【发布时间】:2017-04-09 04:33:59
【问题描述】:

我的任务:在 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 有什么我不明白的地方?

【问题讨论】:

  • @Vallentin 谢谢你的回答,但我别无选择,这是有具体要求的具体作业。我看到了这个链接,用户移动相机,但我需要用 glRasterPos 函数移动我的图像,我不明白我应该怎么做
  • @wzpcm:作业?天哪,您的课程材料肯定已经 20 年没有更新了,当然。如今,您将很难找到真正支持累积缓冲区的系统。事实上,消费级硬件完全支持累加缓冲区从不。如果您真的想走这条路(使用抖动的投影矩阵进行多次渲染),那么在当今时代,您将不得不使用帧缓冲区对象而不是累加缓冲区。

标签: c++ opengl graphics antialiasing


【解决方案1】:

调用glRasterPos 不会移动任何东西,它只是设置当前位置 - 将其视为为内部posxposy 变量赋值。您应该再次绘制您的图像(调用glDrawPixels)以查看此调用的效果。

【讨论】:

    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2011-02-16
    相关资源
    最近更新 更多