2016-09-13 11 views
1

私は非常に基本的なOpenGLアプリケーションを稼働させようとしています。私はGTX 770を持っており、nvidia-361ドライバをインストールしました。私はglxinfo | grep versionを実行すると、私が手:GL_VERSION文字列とglxinfoバージョン文字列が一致しませんか?

OpenGL core profile version string: 4.5.0 NVIDIA 361.42

OpenGL core profile shading language version string: 4.5.0 NVIDIA

OpenGL version string: 4.5.0 NVIDIA

これは正しい、あなたのドライバーは、OpenGL 4.5サポートと信じているものを導くでしょうか?

今、私は基本的なアプリケーションでGLEWを使用しています。私は、バージョン文字列を取得し、それを印刷:

const GLubyte* version = glGetString(GL_VERSION); 
printf("version: %s\n", version); 

を、私はプログラムを実行すると、私が手:

version: 3.2.0 NVIDIA 361.42

??????????????? ??????????

ここには何が起こっていますか?私はlibglew-devの私のバージョンをチェックし、それは1.13.0です。 1.11.0でOpenGL 4.5のサポートが追加されました。だから私はGLEWが問題だとは思わないが、何が起こっているのか分からない。

答えて

5

glGetString(GL_VERSION)は、現在のGLコンテキストが提供しているバージョンを返すが、必ずしもGL実装がサポートしている最高バージョンである必要はありません。

GLEWはこれとは関係がなく、GL関数ポインタをロードするだけです。関連性がありますはコンテキストを作成しました。ここで見ているのは、最近のバージョンのnvidiaドライバの通常の動作です:GL x.yコンテキストを要求すると、サポートされているバージョンよりもバージョンx.yが返されます。

4.5コンテキストが必要な場合は、GL 4.5コンテキストを要求するだけです。それを行う方法は、コンテキストを作成する方法によって異なります。 GLFW、GLUT、SDL、Qtなどのライブラリを使用する場合は、特定のコンテキストバージョンを要求する方法に関するドキュメントを参照してください。 glXで手動でコンテキストを作成する場合は、適切なGLX_CONTEXT_MAJOR_VERSION_ARBおよびGLX_CONTEXT_MINOR_VERSION_ARB属性を使用してglXCreateContextAttribsARBを使用してください。

+0

ありがとうございます!私は初心者であり、これは多くの助けになりました! – amagumori

関連する問題