1

我有以下代码:

glDisable(GL_COLOR_MATERIAL);
cout<<(int)glIsEnabled(GL_COLOR_MATERIAL)<<endl;
glEnable(GL_COLOR_MATERIAL);
cout<<(int)glIsEnabled(GL_COLOR_MATERIAL)<<endl;

modelDL[t] = glGenLists(1);
glNewList(modelDL[t],GL_COMPILE);           

glDisable(GL_COLOR_MATERIAL);
cout<<(int)glIsEnabled(GL_COLOR_MATERIAL)<<endl;
glEnable(GL_COLOR_MATERIAL);
cout<<(int)glIsEnabled(GL_COLOR_MATERIAL)<<endl;

似乎显示列表中间的 2 行阻止了 glDisable 和 glEnable。这段代码的输出是:

0
1
1
1

它应该是

0
1
0
1

如果删除显示列表的 2 行,则输出正常。如何将 glEnable 和 glDisable 与显示列表一起使用?

4

2 回答 2

2

如果GL_COMPILE_AND_EXECUTE您想在构建显示列表时查看它的副作用,请使用它。

于 2014-06-06T18:11:22.193 回答
0

我认为这很好:第二个 glDisable 和 glEnable 被写入列表中,稍后将在显示列表时执行。

将其放入列表中,不会立即更改状态。

于 2016-02-10T00:08:20.967 回答