У меня есть следующий код:
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;
Похоже, что две строки в середине списка отображения блокируют glDisable и glEnable. Выход этого кода:
0
1
1
1
и это должно быть
0
1
0
1
Если удалить 2 строки списка отображения, вывод в порядке. как я могу использовать glEnable и glDisable со списком отображения?
использование GL_COMPILE_AND_EXECUTE
если вы хотите увидеть побочные эффекты вашего списка отображения по мере его создания.
Я думаю, что это хорошо: 2-й glDisable и glEnable записываются в список и будут выполнены позже, когда список отобразится.
Внесение его в список, не сразу меняет состояние.