ISGL3D透明度问题

时间:2012-05-04 14:19:16

标签: iphone opengl-es transparency alpha-transparency

我正在使用isgl3d框架运行iOS项目来显示pod文件。

我有一个带有0.5个alpha窗口的时尚车,我希望在相机背景上渲染,寻求增强现实效果。

Windows上的alpha看起来没问题,但是当我添加对象时,我注意到它透明地呈现整个对象,窗口在哪里。包括汽车内饰。

就像这样(例如,通过仪表板可以看到键盘,座位等等。应该是实心的)

bad car is bad

汽车内饰是一个单独的物体,alpha 1.0。

我宁愿不在我的项目中展示“鬼车”,但我还没有找到解决方法。

有没有人遇到过同样的问题,并最终达成了解决方案?

解决: 感谢Demi的回答。这是最终的代码:

// Render opaque objects
        [_scene render:renderer opaque:true];

        // First planar shadow pass (if needed)
        [self renderPlanarShadows:renderer];

        // Render transparent objects
        glColorMask(1, 1, 1, 0);
        if (_zSortingEnabled) {
            [_scene renderZSortedAlphaObjects:renderer viewMatrix:&viewMatrix];

        } else {
            [_scene render:renderer opaque:true];
        }
        glColorMask(1, 1, 1, 1);

1 个答案:

答案 0 :(得分:3)

问题:你的玻璃重写了alpha通道。在绘制汽车玻璃时不要修改它。使用glColorMask(1, 1, 1, 0)绘制透明项时,禁用对颜色缓冲区的Alpha通道的写入。不要忘记在透明绘图后恢复:glColorMask(1, 1, 1, 1) !!!