快板5中的消除混叠

Anti-aliasing in allegro 5

本文关键字:快板      更新时间:2023-10-16

如何使allegro 5在绘图时使用抗锯齿?我需要斜线来显得平滑。目前,它们只是着色像素的线条,边缘看起来很硬。

为基元启用抗锯齿:

// before creating the display:
al_set_new_display_option(ALLEGRO_SAMPLE_BUFFERS, 1, ALLEGRO_SUGGEST);
al_set_new_display_option(ALLEGRO_SAMPLES, 8, ALLEGRO_SUGGEST);
display = al_create_display(640, 480);

请注意,抗锯齿仅适用于直接绘制到后缓冲区的基本体。它在其他任何地方都不起作用。

在OpenGL上,您的卡必须支持ARB_multisample扩展。

检查是否已启用(使用ALLEGRO_SUGGEST时):

if (al_get_display_option(display, ALLEGRO_SAMPLE_BUFFERS)) {
   printf("With multisampling, level %in",
     al_get_display_option(display, ALLEGRO_SAMPLES));
}
else {
   printf("Without multisampling.n");
}

您有两个选项:直线平滑或多重采样。

可以使用glEnable(GL_line_SMOOTH)激活线条平滑。请注意,当您通过Allegro划线时,Allegro 5可能会重置此选项。

另一种选择是创建多采样显示。这必须在调用al_create_display之前完成。方法是这样的:

al_set_new_display_option(ALLEGRO_SAMPLE_BUFFERS, 1, ALLEGRO_REQUIRE);
al_set_new_display_option(ALLEGRO_SAMPLES, #, ALLEGRO_SUGGEST);

上面的#应该是要使用的样本数。有多少这取决于实现,Allegro没有帮助。这就是为什么我使用ALLEGRO_SUGGEST而不是REQUIRE作为样本数量。你使用的样品越多,你得到的质量就越好。8个样本可能是大多数硬件支持的一个不错的值。