如何让 allegro 5 在绘图时使用抗锯齿功能?我需要对角线看起来平滑。目前,它们只是阴影像素线,边缘看起来很硬。
问问题
2684 次
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 回答