OpenGL显示列表块glEnable(GL_COLOR_MATERIAL)

时间:2014-06-06 17:35:33

标签: c++ opengl 3d material displaylist

我有以下代码:

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?

2 个答案:

答案 0 :(得分:2)

如果您想要查看显示列表的副作用,请使用GL_COMPILE_AND_EXECUTE

答案 1 :(得分:0)

我认为没问题:第二个glDisable和glEnable被写入列表,稍后将在显示列表时执行。

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