1

如何让 allegro 5 在绘图时使用抗锯齿功能?我需要对角线看起来平滑。目前,它们只是阴影像素线,边缘看起来很硬。

4

2 回答 2

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 %i\n",
     al_get_display_option(display, ALLEGRO_SAMPLES));
}
else {
   printf("Without multisampling.\n");
}
于 2011-06-17T22:17:43.627 回答
3

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

您可以使用 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 个样本可能是一个不错的值。

于 2011-06-17T21:42:52.173 回答