5

OpenGL 3.0 と 3.1 では、私が不可欠だと思うかなりの数の機能が廃止されました。特に、シェーダーでの固定機能の使用。

誰かがそれと実際に何が起こっているのか説明できますか?

誰もが使っていることは明らかであり、正気なハードウェア会社がサポートを削除しようとしないような便利な機能を廃止する必要があるのはなぜでしょうか?

4

5 に答える 5

7

あなたが言ったように、固定機能シェーダーのサポートを削除するハードウェア会社はありません。それらを使用する既存のアプリケーションが非常に多いためです。ただし、彼らがやりたくないのは、FF シェーダーと今後追加されるすべての拡張機能との間の相互作用を指定する方法を理解することです。これらの相互作用は非常に複雑であり (FF シェーダーが非常に複雑なため)、ベンダー間でバグや一貫性のない実装が発生し、開発者とエンド ユーザーの両方に悪影響を及ぼします。

したがって、彼らは一線を画しています。FF シェーダーを使用したい場合、新しい機能はまったく得られません。新しい機能が必要な場合は、FF シェーダーを使用できません。これは、Microsoft が D3D10 で行ったことと非常によく似ています。多数の新機能が追加されましたが、同時に固定機能のシェーダーが完全に削除されました。シェーダー以外の新しい機能を必要としているが、プログラマブル シェーダーも必要としない開発者のセットは非常に少ないと考えられています。

于 2009-08-02T08:55:14.507 に答える
2

誰もが明らかに使用しているような便利な機能を廃止する必要があり、正気のハードウェア会社がサポートを削除することはないのはなぜですか?

MacOSX 10.7は3.2コアしかサポートしていないので、Appleは正気ではないと思います。互換性仕様のサポート、ARB_compatibility拡張機能、何もありません。2.1コンテキストまたは3.2コアコンテキストのいずれかを作成できます。

ただし、理由が必要な場合:

  1. 完全を期すために:ジェシーホールが言ったこと。ARBは、固定機能と新機能の間の相互作用を考慮する必要がなくなりました。整数演算、配列テクスチャ、およびその他のさまざまな機能は、固定関数パイプラインでは使用できないように定義されています。OpenGLは、GL 3.0がリリースされてから、過去3年間で本当に改善されました。ARBの変更のペースはかなり重要です。それらのすべての機能を固定機能と相互作用させる方法を見つけなければならなかったとしたら、それは可能でしたか?また、機能の相互作用が固定されていなかった場合、古いコードから新しい機能にアクセスできないことに不満を感じませんか?これはうまく導きます:

  2. これは、何を使用すべきかを示す強​​力な指標として機能します。互換性コンテキストが常に利用可能である場合でも、コアOpenGLを調べて、問題解決にどのように取り組むべきかを確認できます。

  3. これにより、最終的なデスクトップGLとGLESの統合がはるかに合理的になります。ES 2.0は古いものをすべて破棄し、コアGL2.1と思われるものを採用しました。最終的な目標は、OpenGLを1つだけにすることです。そのためには、デスクトップGLからすべての問題を取り除くことができなければなりません。

于 2011-08-30T04:18:14.370 に答える
2

「非推奨」とマークされた機能は実際には削除されないことを明確にする必要があります。たとえば、OpenGL3.0コンテキストにはすべての機能があります。何もなくなっていません。さらに、一部のベンダーは、非推奨の機能も有効にする互換性プロファイルを使用して3.1および3.2コンテキストを作成できるドライバーを出荷します。したがって、サポートするベンダーハードウェアを詳しく調べて、古い機能のARB互換モードについて質問してください。(3.2の時点で「コア」プロファイルもあります。これにより、ベンダーは、そのようなものを作りたい場合に、よりスリムで意地悪なドライバーを作成できます)

現在のカードには実際にはFFハードウェアセクションがなく、シェーダーのみを実行していることに注意してください。FFの動作を要求すると、GLランタイムがユーザーに代わってシェーダーを作成します。

于 2009-08-04T23:47:37.190 に答える
1

固定機能シェーダーは、標準のGLSLシェーダーに非常に簡単に置き換えることができるため、論理的に非推奨にすべきではない理由を理解するのは困難です。

OpenGL ES 2.0はFFパイプラインをサポートしていないため(したがって、OpenGL ES 1.xとの下位互換性がないため)、近い将来、多くのハードウェアから削除されないかどうかはわかりません。最近のOpenGLの勢いの多くは、モバイルプラットフォームでのOpenGL ESの普及によるものであり、FF機能がなくなると、その使用をやめるようにかなりのプレッシャーがかかるように思われます。

実際、よりスリムなOpenGL ES実装は、今後数年間で標準のOpenGLにかなり広く置き換わると思います。また、FF機能は、完全なOpenGLを実装するハードウェアから削除されるのではなく、ほとんどのハードウェアがOpenGL ESを実装するため、さらになくなる可能性があります。

于 2009-08-02T09:26:12.493 に答える
0

OpenGL では、「コア」プロファイルと「互換」プロファイルの両方が可能です。したがって、ほとんどのシステムでは、非推奨または削除された機能へのアクセスが失われることはありません。

ただし、互換性を確保したい場合は、コア部分に固執するのが最善です。互換性プロファイルは保証されません (ほとんどのハードウェアに互換性プロファイルがあり、現在の状態では、コアのみのものではなく、古い OpenGL に遭遇する可能性が高くなります)。また、OpenGL ES は OpenGL のサブセットになりました。OpenGL ES 2.x/3.x プログラムを作成し、ほとんど変更することなく OpenGL 4.3 で実行することができます。

PlayStation や Nintendo のようなゲーム コンソールは、OpenGL を使用するのではなく、独自のグラフィック ライブラリを同梱しています。

それらは OpenGL に基づいていましたが、ここでは ES と同様に簡略化されています (当時 ES 2.0 は出ていなかったと思います)。これらのシステムは、独自のグラフィックス ドライバーとライブラリを作成する必要があり、ハードウェア ベンダーに、基本的にレガシー ラッピング ライブラリの全負荷を作成するように依頼するのは少し多すぎます (すべての固定機能のものは、ある段階でシェーダーに実装されてしまいます)。いずれにせよ、glBegin/glEnd が自動的に VBO に変換される可能性があります)。

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

于 2012-10-15T02:47:51.313 に答える