【发布时间】:2012-03-04 00:29:12
【问题描述】:
我正在开发一个模拟程序,该程序在一个大的 2D 矩形顶部绘制点和其他图元,并在其上映射纹理。
问题是,当我绘制多边形并使用 glColor3f 为顶点指定颜色时,该颜色似乎会影响纹理的颜色,而不仅仅是我绘制的多边形。因此,绘制红色多边形似乎会“渗出”到整个纹理上,并且一切都显得偏红。
我尝试在绘制多边形之前使用 glDisable(GL_TEXTURE_2D) 解决此问题,然后再次启用。但这似乎没有任何效果。
【问题讨论】:
我正在开发一个模拟程序,该程序在一个大的 2D 矩形顶部绘制点和其他图元,并在其上映射纹理。
问题是,当我绘制多边形并使用 glColor3f 为顶点指定颜色时,该颜色似乎会影响纹理的颜色,而不仅仅是我绘制的多边形。因此,绘制红色多边形似乎会“渗出”到整个纹理上,并且一切都显得偏红。
我尝试在绘制多边形之前使用 glDisable(GL_TEXTURE_2D) 解决此问题,然后再次启用。但这似乎没有任何效果。
【问题讨论】:
glColor3f 在调用后更改您绘制的所有内容的颜色,因为您正在设置 OpenGL 的颜色状态。这就是 OpenGL 通常的工作方式。 (glTranslate/Rotate/Scalef、glMultMatrix、glLoadIdentity 等的工作方式与它们使用矩阵模式状态选择的矩阵更改转换状态相同(使用glMatrixMode 设置))
为了将颜色“重置”回默认值,请致电glColor3f(1.0f, 1.0f, 1.0f);
【讨论】: