如何在制作时使allegro 5使用抗锯齿?我需要对角线看起来很光滑。目前,它们只是阴影像素线,边缘看起来很难。
答案 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个样本可能是大多数硬件支持的良好值。