纹理会影响对象的颜色

时间:2011-03-19 04:04:43

标签: opengl opencv textures

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

1 个答案:

答案 0 :(得分: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