我有以下代码:
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?
答案 0 :(得分:2)
如果您想要查看显示列表的副作用,请使用GL_COMPILE_AND_EXECUTE
。
答案 1 :(得分:0)
我认为没问题:第二个glDisable和glEnable被写入列表,稍后将在显示列表时执行。
将其放入列表中,不会立即更改状态。