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