人々は、OpenGLの状態を管理することが有用であると言われていました(ちょうど2001年からの記事を見ました)。この(C++)のように:OpenGLの状態をキャッシュするのはまだ理にかなっていますか?
void CStateManager::setCulling(bool enabled)
{
if (m_culling != enabled)
{
m_culling = enabled;
if (m_culling)
glEnable(GL_CULL_FACE);
else
glDisable(GL_CULL_FACE);
}
}
私は、これはOpenGLのサーバーは、OpenGLクライアントと同じ場所にいない状況で、まだ役に立つかもしれないことがわかります。しかし、それは確かに私の 'ゲーム'エンジンのケースではないので、OpenGLクライアントは常にOpenGLサーバーと同じマシンにあると仮定しましょう。
ドライバを呼び出すのではなく、すべてのチェックコードがサイクルを迎えるのはまだ価値がありますか(今は2017です)。
私はそれを自分自身でプロファイルしなければならないと言えるかもしれませんが、私の個人的なテストでは十分に表現できないようなグラフィックアダプタ、ドライバ、CPU、OSがあります。
EDIT:そして、どのようにについてのすべてのこのチェック・コードを持っているにバインドされたバッファのようなもの、フレームバッファ、テクスチャ、...
それは依存します。あなたが不必要なコールをたくさんしているなら、それから恩恵を受けるでしょう。しかし、最終的には、それを "測定"するためにボウルします。他に誰もできるのはこれだけです。 – BDL
あなたはまたダイレクトステートアクセスの方法を使用することができます;) –