2011-03-19 85 views
0

我在OpenGL中将我的摄像头输入(OpenCV)映射为平面中的纹理。当我执行我的程序时,我注意到纹理影响到其他现有平面的颜色。所以,如果我有一个黑色的纹理,我看不到我的3D场景。在OpenGL中有没有办法避免纹理影响其他对象的颜色?
理想的结果应该是,如果纹理是黑色的,只有一个平面应该是黑色的,而其他应该保留先前定义的颜色。纹理影响对象的颜色

回答

2

OpenGL API更改了渲染上下文的状态。渲染上下文还包括用于生成几何片段的实际纹理。

如果启用纹理处理(即* glEnable(GL_TEXTURE_2D)*),则将其应用于所绘制的所有几何图形,直至设置此状态标志。您可以使用* glDisable(GL_TEXTURE_2D)*来禁用纹理。

也许您不会禁用其他平面的纹理,实际上纹理仍然适用于其他平面。

你应该做的事情如下所示:

glEnable(GL_TEXTURE_2D); 
... 
DrawPlane0(); // This plane is textured 
... 
glDisable(GL_TEXTURE_2D); 
... 
DrawPlane1(); // This plane is not textured 
+0

真的很感谢你的帮助卢卡,谢谢! – 2011-03-19 19:29:07