私はthis記事を読んでいた、と著者は書いている:OpenGLではプログラムのパフォーマンスが低下しますか?
ここでは、2つの簡単な手順で、すべてのプラットフォーム上で高性能なアプリケーションを作成する方法は次のとおりです。[...]
は、ベストプラクティスに従ってください。 AndroidやOpenGLの場合、これには「バッチ描画呼び出し」、「フラグメントシェーダーで破棄を使用しない」などが含まれます。
このような破棄はパフォーマンスなどに悪影響を及ぼし、詳細なアルファが必要ない場合はブレンドを避けるために使用しています。
なぜ誰かが廃棄物を使用するのが悪い習慣とみなされ、discard + depthtestがalpha + blendと比較される理由を説明できますか?
編集:この質問に対する回答を受け取った後、テクスチャ付きのクワッドを背景グラウンドグラウンドでレンダリングしてテストしました。 GL_DEPTH_TESTとライン "if( gl_FragColor.a < 0.5){ discard; }
" で終わるフラグメントシェーダを用い
- は約32 FPSを与えました。
- フラグメントシェーダからif/discardステートメントを削除すると、 のレンダリング速度が約44 fpsに増加しました。ブレンド機能付きGL_BLENDを使用
- "(GL_SRC_ALPHA、 GL_ONE_MINUS_SRC_ALPHA)" は代わりGL_DEPTH_TESTの周りにも44 FPSもたらしました。
非常に興味深い質問ですが、誰かがそれに答えることができれば幸いです。 – bvd