快板中的抗锯齿5

时间:2011-06-17 20:27:28

标签: c++ antialiasing allegro allegro5

如何在制作时使allegro 5使用抗锯齿?我需要对角线看起来很光滑。目前,它们只是阴影像素线,边缘看起来很难。

2 个答案:

答案 0 :(得分:4)

为基元启用抗锯齿:

// 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 %i\n",
     al_get_display_option(display, ALLEGRO_SAMPLES));
}
else {
   printf("Without multisampling.\n");
}

答案 1 :(得分:2)

您有两种选择:线条平滑或多重采样。

您可以使用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个样本可能是大多数硬件支持的良好值。