2012-03-18 30 views
4

免責事項: (同様の)投稿はスーパーユーザに移行され、削除されたようですが、まったく同じ質問に対するいくつかの提案が出ています。しかし、私はここでも私の質問をここに掲示したいと思います。なぜなら、スーパーユーザに投稿しないように十分に関連したソフトウェア/プログラミングだと思うからです(ソフトウェアはハードとハードの間に曖昧です)。OpenGL GLUT on VirtualBox Ubuntu 11.10セグメンテーションフォールト

私はSSDにインストールされたUbuntu 11.10でVirtualBoxのCode :: Blocksで非常に単純なOpenGLプログラムを実行しています。私はプログラムを&実行を構築するたびに、私はこれらのエラーを取得:

  • OpenGLの警告:XGetVisualInfoは0x232dbe0
  • OpenGLの警告のために0ビジュアルを返さ:再試行0x802は0ビジュアルを返されたとし
  • セグメンテーションフォールト

私が今まで自分で収集したものから、これはVirtualBoxに関連しています。私は、むしろX.orgを介して間接的レンダリングを可能にするハードウェアと直接通信する、換言すれば

  • LIBGL_ALWAYS_INDIRECT = 1

を設定する必要があります。この問題は、同じプログラムを完璧に実行するATIカードを備えたラップトップを持っているため、ATIカードがあるという事実とは関係ありません。

まだ、私のGPUがATIであるという事実は、まったく何の役割も果たさないと言っても過言ではありません。 LIBGL_ALWAYS_INDIRECT = 1を設定する方法上の任意の助けをいただければ幸いです

:また私は必ずドライバーが正しくインストールされている場合だ(クロム。 - - >グラフィックス>グラフィックスドライバは、システム情報の下で述べています)。私は単に、このコマンドをどこに置くか、端末でどこで実行するかについての知識が不足しています。

源:

EDIT:端末タイプに:

export LIBGL_ALWAYS_INDIRECT = 1 

直接レンダリングがオフになっていることverfiyする:

glxinfo | grep direct 

ただし、問題は解決しません。私はまだOpenGLの警告とセグメンテーションフォルトについて言及しています。

+0

VMコンフィグレーションでは、3Dアクセラレーションの設定は何ですか? – dwerner

答えて

4

/etc/environmentファイルを見ると、いくつかの変数がそこに公開されています。システム全体にその環境変数を公開する方法がわかります。また、必要に応じて~/.profileまたは~/.bash_profileに入れてみることもできます。

私の心の本当の質問は次のとおりです。あなたはUbuntuのゲスト追加をインストールしましたか?VirtualBoxは実際の物理グラフィックハードウェアをVMに公開しないため、ゲストにATIドライバをインストールする必要はありません。表示セクションの下で、仮想マシン設定で3Dアクセラレーションをサポートするようにゲストを設定することができます(VMを最初にオフにすることを確認してください)。割り当てられた仮想メモリを増やすことをお勧めします。必要に応じて64MBまたは128MBを十分に確保する必要があります。

+0

私はいくつかのスペアSSDスペースに完全に新しくubuntuをインストールしましたが、今はうまく動作しています。問題はVboxに関連しているようです。グラフィックメモリは128MB btwでした。それでも、あなたは答えて、これを調べる努力をした唯一の人です。したがって、私はこの答えを受け入れます。 –

+0

仮想メモリーをバンプし、 ''〜/ .bashrc''に '' LIBGL_ALWAYS_INDIRECT = 1''を追加すると、私のために働いた、ありがとう! –

9

VirtualBox内のUbuntu 12.04でBullet Physics OpenGLデモを実行したときと同じ問題が発生しました。間接的レンダリングを使用するのではなく、ここで説明するようにソースでglutウィンドウ作成コードを変更することで問題を解決することができました:https://groups.google.com/forum/?fromgroups=#!topic/comp.graphics.api.opengl/Oecgo2Fc9Zc

これはリンクに記載されているように

... 
if (!glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) 
{ 
    exit(1); 
} 
glutCreateWindow(title); 
... 

とオリジナル

... 
glutCreateWindow(title); 
... 

を交換伴います。なぜこれがsegfaultの問題を修正するべきかはわかりません。明らかにglutGetには状態値を取得する以外にもいくつかの副作用があります。それは、フリーグラスの不当な実装の奇妙なものかもしれません。