0

GL < 2 のみを完全にサポートするネットブックで開発しています。それはすべて100fps以上で動作しています。しかし、ステートマシンが非推奨になっていると読んだので、移動しようとしていますが、それは不可能のようです。最新の glext.h では多くの関数が宣言されていません。そのため、シェーダー プログラムまたは少なくとも VBO を作成できません。そのため、glm を使用して行列を移動しようとしています。ただし、glm から ogl への行列の送信は、ここでも宣言されていない glUniformMatrix*v を呼び出すことによって行われます。では、GLSL を使用せずに「アップグレード」する方法はありますか? GLSL を含めるだけであるというヒントは必要ありません。GLSL は使用できず、GLSL なしでは不可能だとは信じられないためです。

OpenGL Extension Viewer 3 で拡張機能を確認しました。レポートには、次のように
記載 さ れ て い ます 。 X 0% 4.X 0%







4

3 に答える 3

6

…GL <= 2.2 のみを完全にサポートします。(…) でも、ステートマシンが非推奨になっていると読んだので、動かそうとしていますが、無理そうです。

まず、ステート マシンは非推奨ではありません。固定関数パイプラインは廃止されました。ただし、この変更は OpenGL-3 コア以降にのみ適用されます。したがって、OpenGL-2 に制限されている場合でも、固定機能とすべてのジャズを引き続き利用できます。

では、GLSL を使用せずに「アップグレード」する方法はありますか?

固定関数パイプラインを非推奨にすることは、ほぼ同じことを意味することを認識しています。すべてがシェーダーで行われるようになりました。GLSL で記述されたシェーダー。

GLSL は OpenGL-2 でも利用できます。必須ではありません。

最新の glext.h では多くの関数が宣言されていません。そのため、シェーダー プログラムまたは少なくとも VBO を作成できません。

必要なのは glext.h だけではありません。また、OpenGL 実装から高度な機能をロードするコードも必要です。このための一般的な選択肢は GLEW で、http://glew.sourceforge.net で入手できます。

使えない

まあ、すぐに使えるわけではありません。しかし、GLEW を使用するのは簡単です。

  1. GLEWをダウンロード
  2. 追加でインストールされたライブラリにインストールし、ディレクトリを含めます
  3. #include <GL/gl.h>の出現箇所をすべて置き換える#include <GL/glew.h>
  4. glew32.lib をライブラリの依存関係としてリンカー設定に追加します
  5. glewInit();各 OpenGL コンテキスト作成の直後に呼び出しを追加します。
于 2012-12-11T12:40:07.303 に答える
1

glewを使用してみてください。問題を直接解決するわけではありませんが、Windows で OpenGL 拡張機能を使用することに関する多くの (潜在的に関連する) 問題を解決します。

于 2012-12-11T12:29:40.383 に答える
0

プラットフォームがOpenGLES2.0をサポートしているかどうかを確認します。これは事実上、最新のデスクトップの標準になっています。その場合は、OpenGLES2.0を使用してください。

また、OpenGL拡張機能に必要な多くの機能を見つけることができるかもしれません。プラットフォームで使用可能な拡張機能を確認し、関数名が後の標準名(glBindFramebuffer_EXTなど)と異なる場合があることに注意してください。

于 2012-12-11T12:51:36.407 に答える