2009-08-02 20 views
5

OpenGL 3.0と3.1は、私が本質的に見つけた多くの機能を非難しました。特に、シェーダでの固定機能の使用。OpenGL:非推奨とはどういう意味ですか?

誰もが本当にそのことを説明できますか?

なぜ誰も明白な誰もが使用するような有用な機能を非難する必要があること、そして純然たるハードウェア会社がサポートを取り除くつもりはないことを彼らは知っていますか?

答えて

6

言われたように、ハードウェア会社は、固定機能シェーダのサポートを削除することはありません。既存のアプリケーションが非常に多いためです。しかし、彼らがやりたくないことは、FFシェーダーとそれが追加するすべての拡張機能とのやりとりをどのように指定するかを理解することです。これらのやりとりは非常に複雑です(FFシェーダが非常に複雑であることもあります)。これはバグやベンダ間での矛盾した実装につながります。どちらも開発者やエンドユーザには悪いことです。

FFのシェーダを使用する場合は、新しい機能を使用できません。新しい機能が必要な場合は、FFシェーダーを使用することはできません。これは、MicrosoftがD3D10で行ったことと非常によく似ています。新しい機能が追加されましたが、同時に固定機能シェーダが完全に削除されました。シェーダ以外の新しい機能を必要とするが、プログラマブルシェーダは必要ない開発者のセットは非常に小さいという信念があります。

1

固定機能シェーダは、標準のGLSLシェーダで置き換えられるので、論理的に非推奨にしてはいけません。

OpenGL ES 2.0はFFパイプラインをサポートしていないため、近い将来、多くのハードウェアから落とされることはありません。OpenGL ES 1.xとの下位互換性はありません)。最近、OpenGLの勢いの大部分は、モバイルプラットフォーム上でのOpenGL ESの普及からもたらされ、FF機能がそこから消え去っていくと、その使用から離れていく大きな圧力がかかります。

実際OpenGL ESの実装が標準OpenGLに置き換わることが予想され、FF機能はほとんどのハードウェアがOpenGL ESを実装するハードウェアではなく、完全OpenGLを実装するハードウェアから削除されているため

2

「廃止予定」とマークされた機能は、実際には削除されないことを明確にする必要があります。たとえば、OpenGL 3.0のコンテキストにはすべての機能があります。さらに、一部のベンダは、非推奨機能を有効にする互換性プロファイルを使用して3.1および3.2のコンテキストを作成できるドライバを出荷します。したがって、サポートするベンダーのハードウェアを詳しく見て、古い機能のARB互換モードについて質問してください。 (3.2のような「コア」プロファイルもあります。これにより、ベンダーはよりリーンで平均的なドライバーを作成できます)

現在のカードにはFFハードウェアが実際にはありませんシェイダーを実行するだけです。あなたはFFの挙動を求める場合には、GLランタイムがあなたに代わってシェーダーをオーサリングます。..

+0

"GLランタイムはあなたの代わりにシェーダをオーサリングしています。" ....これについては参考になりますか? – shoosh

+0

頭の上から外れません。 IHVドライバーとの会話だけ。 –

+0

参照:http://developer.nvidia.com/object/opengl_driver.html – Stringer

2

は、なぜ彼らはその明白な誰もが使用するような便利な機能を廃止する必要性を見つけるのですし、何もまともなハードウェア会社は、削除しようとされていないことへのサポート?

私はMacOSXの10.7のみ3.2 コアをサポートしているため、その後Appleは、非常識でなければならないと仮定します。互換性仕様のサポートはなく、ARB_compatibility拡張はありません。 2.1コンテキストまたは3.2コアコンテキストを作成することができます。しかし

、あなたは上の理由たい場合:ジェシー・ホールが言った:完全を期すために

  1. を。 ARBは、固定機能と新機能との相互作用を考慮する必要がなくなりました。整数関数、配列テクスチャ、およびその他のさまざまな機能は、固定関数パイプラインでは使用できないように定義されています。 GL 3.0が出て以来、OpenGLは本当に過去3年間で改善しました。 ARBの変化のペースはかなり大きい。これらの機能のすべてを固定機能と相互作用させる方法を見つけなければならないのであれば、それは可能でしょうか?そして、もしそれらが固定機能のやりとりをしていなかったら、あなたはあなたの古いコードから新しい機能にアクセスすることができないと不平を言うことはありませんか?どのようなものであるかの強い表示となりますを使用するべきですか?互換性コンテキストが常に利用可能であっても、コアOpenGLを見れば、どのようにして問題解決に近づくべきかを知ることができます。

  2. 最終的なデスクトップGLとGL ESの統合をはるかに合理的にします。 ES 2.0は古いものをすべて取り除き、あなたがコアGL 2.1と考えるかもしれないものを採用しました。究極の目標は、OpenGLを1つしか持たないことです。これを行うには、すべての裂け目のデスクトップGLを取り除くことができなければなりません。

0

OpenGLでは、「コア」プロファイルと「互換性のある」プロファイルの両方が可能です。だから、ほとんどのシステムでは、廃止予定の機能や削除された機能へのアクセスを失うことはありません。

しかし、互換性を保ちたい場合は、コアの内容に固執することをお勧めします。互換性プロファイルは保証されません(ほとんどのハードウェアに1つのハードウェアがあっても、現在の状態ではコアのみではなく古くなったOpenGLに遭遇する可能性が高くなります)。また、OpenGL ESは現在OpenGLのサブセットになっており、OpenGL ES 2.x/3.xプログラムを作成してOpenGL 4.3で動作させることはほとんどできません。

PlayStationsや任天堂のようなゲームコンソールは、OpenGLを使用するのではなく、独自のグラフィックライブラリを搭載しています。

OpenGLをベースにしていましたが、ここでESと同じように削除されました(私はES 2.0が当時のものだったとは思わない)。これらのシステムでは、独自のグラフィックドライバとライブラリを作成する必要があります。ハードウェアベンダには、基本的に従来のラップライブラリの負荷がどれくらいあるかを尋ねる必要があります(すべての固定機能は、とにかくglBegin/glEndが自動的にVBOに変わる可能性があります)。

開発者にプログラミングの現在の方法を知らせることも重要だと思います。何十年もの間、人々はデフォルトで物事を行うために「間違った」方法を教えられ、頂点バッファオブジェクトは余分に教えられました。

関連する問題