【发布时间】:2020-12-29 16:56:55
【问题描述】:
我在这里的第一个问题。在我的程序中,深度测试在某些计算机上可以正常工作,但在其他计算机上不起作用,位于较远的对象会覆盖位于较近的对象。我打电话给glEnable(GL_DEPTH_TEST); 并试图打电话给glDepthFunc(GL_LESS);,正如我所说,在某些计算机上一切正常,但同一程序在其他计算机上不能正常工作。怎么解决?
编辑:问题已解决。在调用之前添加了这些行
al_create_display(); 一切正常
al_set_new_display_option( ALLEGRO_COLOR_SIZE, 32, ALLEGRO_REQUIRE);
al_set_new_display_option( ALLEGRO_DEPTH_SIZE, 24, ALLEGRO_REQUIRE);
al_set_new_display_option( ALLEGRO_STENCIL_SIZE, 8, ALLEGRO_REQUIRE);
al_set_new_display_option( ALLEGRO_AUX_BUFFERS, 0, ALLEGRO_REQUIRE);
al_set_new_display_option( ALLEGRO_SAMPLES, 4, ALLEGRO_SUGGEST);
【问题讨论】:
-
您必须确保默认帧缓冲区具有深度缓冲区。默认帧缓冲区是在初始化 OpenGL 窗口和上下文时创建的。
-
@Rabbid76 如果我使用即时模式,我该怎么做?
-
@Rabbid76 我正在使用 Allegro 5,我应该调用 al_set_new_display_option(),还是设置显示标志?
-
对不起,我对 Allegro 5 不熟悉。可能你要设置
al_set_new_display_option(ALLEGRO_DEPTH_SIZE, ..., ...)
标签: c++ opengl depth-buffer depth-testing