2012-03-04 47 views
1

我正在研究一个模拟程序,该程序可以在具有映射到其上的纹理的大型2D矩形顶部绘制点和其他图元。在OpenGL中绘制带有颜色的多边形会导致纹理颜色发生变化

问题是,当我绘制多边形并使用glColor3f为顶点指定颜色时,该颜色似乎影响纹理的颜色,而不仅仅是我画的多边形。所以绘制一个红色的多边形似乎“流血”到整个纹理上,一切都显得偏红。

我试图通过在绘制多边形然后再次启用之前使用glDisable(GL_TEXTURE_2D)来解决此问题。但这似乎没有任何影响。

回答

4

glColor3f在你调用OpenGL的颜色状态后改变你绘制的所有东西的颜色。这就是OpenGL的工作原理。 (glTranslate/Rotate/ScalefglMultMatrixglLoadIdentity等中,因为他们改变使用由矩阵模式状态选择的矩阵变换状态下的相同的方式工作(设定glMatrixMode))

为了“重置”颜色回默认,请致电glColor3f(1.0f, 1.0f, 1.0f);

+0

你是先生。谢谢。我花了很长时间才弄清楚glColor3f会影响一切,更别说glColor3f(1.0f,1.0f,1.0f)会重置它... – 2012-06-23 22:25:15