OpenGL 显示列表块 glEnable(GL_COLOR_MATERIAL)

Posted

技术标签:

【中文标题】OpenGL 显示列表块 glEnable(GL_COLOR_MATERIAL)【英文标题】:OpenGL Display list blocks glEnable(GL_COLOR_MATERIAL) 【发布时间】:2014-06-06 17:35:32 【问题描述】:

我有以下代码:

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 与显示列表一起使用?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

我觉得没问题:第二个glDisable和glEnable写入列表,待列表显示后执行。

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

【讨论】:

以上是关于OpenGL 显示列表块 glEnable(GL_COLOR_MATERIAL)的主要内容,如果未能解决你的问题,请参考以下文章

应该是每个纹理单元应用glEnable(GL_TEXTURE_2D)

Opengl:地球纹理

OpenGL 纹理无法正常工作

openGL之API学习(二零零)GL_TEXTURE_GEN_S GL_TEXTURE_GEN_T GL_TEXTURE_GEN_R GL_TEXTURE_GEN_Q

如何在opengl iphone中为纹理提供动画?

立方体侧面的纹理与opengl