2

Pod ファイルを表示するために isgl3d フレームワークを使用して iOS プロジェクトを実行しています。

0.5 アルファ ウィンドウを備えたスタイリッシュな車をカメラの背景にレンダリングして、拡張現実の良さを求めています。

ウィンドウのアルファは問題ないように見えますが、オブジェクトを追加すると、ウィンドウが存在するオブジェクト全体が透過的にレンダリングされることに気付きました。車内も含めて。

みたいな感じで(例えば、ダッシュボードやシートなどからキーボードが透けて見えます。しっかりしているはずです)

悪い車は悪い

車内はアルファ1.0の別オブジェクトです。

プロジェクトで「ゴーストカー」を表示したくないのですが、これを回避する方法が見つかりません。

誰かが同じ問題に遭遇し、最終的に解決策に達しましたか?

解決済み: デミの回答に感謝します。最終的なコードは次のとおりです。

// 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);
4

1 に答える 1

3

Problem: your glass rewrites alpha channel. Make it not modified when draw car's glass. Disable writes to color buffer's alpha channel when you drawing transparent items by using glColorMask(1, 1, 1, 0). Don't forget to restore after transparent drawing: glColorMask(1, 1, 1, 1)!!!

于 2012-05-05T09:47:58.693 に答える