一部のコンピューターでOpenGLがない、または遅い原因は何ですか?それを修正する方法は?


7

JavaとJOGLを使用して、OpenGL拡張2Dグラフィックスを作成しています。私が使用するグラフィックス操作は特別なものではなく、ほとんどすべての最近のグラフィックスカードでサポートされているはずです。たとえば、私のゲームはネットブック上でうまく動作します。

ほとんどのコンピューターでゲームが実行されることを期待していました。自分のコンピュータでは問題なく動作します。ただし、一部のコンピューターではパフォーマンスが非常に遅いことがわかりました(明らかにソフトウェアフォールバックで、1秒あたり約2フレームです)。そのようなコンピューターの1つでLWJGLアプリを実行しました。それはまったく実行されません(org.lwjgl.LWJGLExceptionのようなものを報告します:ピクセル形式は加速されていません。これについて不平を言っているさまざまなフォーラムスレッドが見つかることがありますが、ドライバーの問題であるという提案以外は明らかな解決策はありません)。他のOpenGLソフトウェアも機能していないようです。まったく同じグラフィック効果を備えた私のFlashバージョンのゲームは、同じコンピューターでフルスクリーンでかなりうまく機能することもわかりました。問題のコンピューターには最近のATIカードがありますが、残念ながらドライバーマネージャーにアクセスできません。

問題はかなり広まっているようです。OpenGLがほとんどのコンピューターにあるグラフィック機能へのアクセスを常に提供するとは限らないのは非常に残念です。これは、私がどんなコンピューターでも走ることを期待しているカジュアルな2Dゲームにとって魅力的ではありません。

あなたはこの問題に遭遇し、なんとかそれを修正できましたか?私の知る限り、NVidiaとATIの両方が標準のドライバーセットの一部としてOpenGLを提供していますが、いくつかの例外があるのではないでしょうか?この問題はOpenGLをサポートしていないサードパーティのドライバーが原因で発生しますか?より良いドライバーをインストールすることで問題を解決できますか?OpenGLドライバーがない他のグラフィックカードはいくつありますか?

編集:最後に、OpenGLはWindowsマシンで十分にサポートされていないと結論づけることができます。Microsoftは、たとえば一部のWindowsドライバーバンドルでOpenGLドライバーを意図的に除外するなどして、プラットフォームから離脱するために最善を尽くしているようです。ベンダードライバーを入手すれば、OpenGLを入手できます。Windowsがダウンロードする標準ドライバーを入手しますが、入手しません。これは他の人たちにもトラブルの終わりを引き起こしていません。たとえば、WebGLを実装するために、Webブラウザーは、DirectX用のOpenGL ESエミュレーターであるAngleを使用します。したがって、本当に必要なのは、完全なOpenGLの場合のみ、Angleのようなものです。


プロットが濃くなります...私がテストした「遅い」コンピューターには実際にATI 3Dドライバーがインストールされているようです...これについてさらに詳しく調べますので、引き続きお知らせします。
Boris van Schooten、

IntelはATIとnVidiaの合計よりも多くのグラフィックスハードウェアを販売していることに注意してください。かなりの差で。プレーンなオールインテグレーテッドグラフィックスでも機能することを確認する必要があります。
Billy ONeal、2011年

ええと、ゲームはIntel Graphics Media Accelerator 950を搭載したネットブックで正常に動作します。これは、最も遅いGPUの1つである必要があります。
ボリス・ヴァン・シューテン、

@ボリス:GMA 650は、実際にはIntelが製造する高速なGPUの1つです-私の理解ではAeroを実行できます。彼らが販売するものの多くはそれを行うことができません(そして、ハードウェアアクセラレーショングラフィックスの形式を実際には提供しません)
Billy ONeal

@billy情報をありがとう。本当に、コンピューターはまだ3D機能なしで販売されていますか?つまり、250ドルのネットブックには650があり、3Dグラフィックスも管理できる古いラップトップを見たことがあります。
Boris van Schooten、

回答:


5

これは、ドライバーがインストールされていない新しいGPUでもよくある問題です。OpenGLバージョンは1.0 1.1であり、ソフトウェアモードで実行されています。

GPUドライバーをインストール/更新し、アプリケーションにバージョンクエリを追加します。返されたOpenGLバージョンが1.1未満の場合は、ドライバーが確実に欠落しています。


2
これでこのコンピュータの問題が解決しました。私はまだ他の人の経験に興味があります。私は使用のOpenGLの拡張機能ビューアを OpenGLドライバをチェックします。GDIジェネリックOpenGL 1.1(=ソフトウェアレンダリング)を報告しました。ドライバーを再インストールしただけでうまくいきました。AFAIK元のドライバーは、ベンダーのWebサイトから直接ダウンロードするのではなく、標準のインストールプロセス(GPU固有のドライバーも検出)を使用してインストールされました。報告されているOpenGLのバージョンは3.3です。私のJOGLアプリは、LWJGLアプリと同様にスムーズに動作するようになりました。
ボリス・ファン・シューテン、

1

私はここで推測していますが、シェーダーを使用していますか?例外を投げたあなたがテストしたコンピュータにどんなビデオカードがありましたか?古い組み込みのIntelカードの多くは、ピクセルシェーダーをサポートしていません。

それが事実である場合、あなたの唯一の真の手段は、固定された関数のフォールバックを提供することです。


固定機能フォールバックとは何ですか?
ザビエル

1
固定関数のフォールバックは、レンダリング中にシェーダーを使用せず、代わりに固定関数パイプラインを使用して同様の効果を実現する(たとえば、バージョン1.5までのOpenGL呼び出しのみなどを使用する)レンダリングパス(異なるレンダリングシステムと考える)です。 。
ChrisE、2011年

私はシェーダーを使用しておらず、テクスチャマッピングとアルファブレンディングだけを使用しています。すべてopengl 1.xのものです。
Boris van Schooten、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.