2

qt-creatorを使用して、glコンテキスト用にqt 4.8のcppで記述された単純なopenglコードがあります。

このコードは、FBO を使用してテクスチャへのレンダリングを実行し、画面にテクスチャを表示します。Render-to-Texture には、頂点バッファー配列が含まれます。次に、デバッグ用に昔ながらの即時レンダリング ( glPushMatrixglBegin(GL_POINTS)glVertexなど) を行います。

マックブックプロで。問題ありません。コードは完全に機能しています。

次に、ubuntuに移植しようとしました。.pro ファイルのいくつかの変更:

LIBS += -lglut -lGLU -lGL -lGLEW                 #linux

LIBS += -framework GLUT -framework OpenGL -lGLEW # mac

およびヘッダーで:

// linux
#include <GL/glew.h>
#include <GL/gl.h>
#include <GL/glu.h>

// mac
#include <GL/glew.h>
#include <gl.h>
#include <glu.h>

ubuntuでは、即時レンダリングが機能し、何をする必要があるかを示していますが、テクスチャは空です(テクスチャバッファからQImageへのピクセル転送を行う場合と、Macですべてが完全に機能する場合の両方で、画面に描画する場合) .

macbookpro にはIntel HD Graphics 4000 512MB、gl バージョン 2.1 INTEL-8.12.47があり、Ubuntu (12.04、3.5.0-36-generic #57~precise1-Ubuntu) マシンにはGEFORCE GTX 660、および gl バージョン 1.4 があります。 (2.1.2 NVIDIA 319.23) .

qtアプリケーションを実行すると、次の警告が表示されるため、gl/nvidiaドライバーに問題があると思います。

libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.

価値がある場合は、最後に接尾辞なしでopenglコマンドを使用_EXTしています..

私はopenglとカードの機能、および(特に)Linuxでのドライバーのインストールについては実用的ではありません。

編集:

示唆されているように、デバッグ詳細フラグを使用して glewinfo を呼び出そうとすると、次のようになります。

libGL: screen 0 does not appear to be DRI2 capable
libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/swrast_dri.so
libGL error: failed to load driver: swrast
4

1 に答える 1

2

GEFORCE GTX 660、および gl バージョン 1.4 (2.1.2 NVIDIA 319.23)。

それは基本的に、適切な OpenGL ドライバーがインストールされていないことを叫びます。GeForce 660GTX は OpenGL-4 に対応しています。

NVidia バイナリ ドライバーが適切にインストールされていることを確認してください (オープン ソースの nouveau ドライバーは進歩していますが、機能とパフォーマンスはまだ大きく遅れています)。

apt-get install nvidia-glx nvidia-kernel-source nvidia-vdpau-driver libgl1-nvidia-glx libglx-nvidia-alternatives

トリックを行う必要があります。

于 2013-07-25T12:13:46.117 に答える