【发布时间】: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