0

私は学期に Opengl を使用しましたが、glBegin...glEnd のような伝統的な方法で使用しました。

GLSL は OpenGL の未来であると誰かが言ったと聞きましたが、従来の OpenGL の代わりに GLSL に飛び込む必要があるのでしょうか?

さらに、GLSL は優れた GPU でのみうまく機能するのでしょうか?

4

2 に答える 2

4

簡単な回答: はい、OpenGL の使用法を更新する必要があります。一般に、glBegin/glEnd のパフォーマンスが低下し、古い固定パイプの動作に制限されてできることが制限されるためです。

長い答え:

あなたは2つの異なる問題を混同しています。それらの 1 つは、即時モード (glBegin glVertex ... glEnd など) とバッチ モード (glVertexPointer など) です。最新の GPU から完全なパフォーマンスを得るには、バッチを使用する必要があります。この SO ディスカッションを参照してください: 「単純な」OpenGL プリミティブ (glBegin()) よりも VBO の方が速いのはいつですか? .

もう 1 つは、固定パイプとプログラマブル シェーダー (glEnable 状態など.. 対 GLSL) です。多くの場合、これはパフォーマンスの問題になりますが、より重要なのは柔軟性の問題です。GLSL を使用すると、物事のレンダリング方法をより細かく制御できるため、固定パイプを使用して実際には不可能だったことを、少なくとも使用可能なフレーム レートでは達成できます。また、プログラマブル シェーダーは、最新の GPU が実際にどのように機能するかをよりよく反映しています。

于 2013-01-30T17:56:59.140 に答える
3

GLSLはOpenGLの未来ではなく、現在のプログラミング方法です。Aelunedが述べているように、glBeginとglEndは非推奨です(OpenGL ESではサポートされていません)。

そして、良いGPUとはどういう意味ですか?Intel統合グラフィックカードでさえシェーダーをサポートしていますが、GLSLを使用することはGLSLであるためだけに遅くなることはありません。重い作業を行うとパフォーマンスが低下する可能性がありますが、固定パイプラインを実装すると、同じパフォーマンスが得られると思います。

GLSLを学ぶことが道のりだと思います。

于 2013-01-30T17:47:39.943 に答える