1

私が取り組んでいるOpenGLアプリは、LinuxとWindowsXPで実行すると、パフォーマンスに大きな違いがあることに気づきました。

確かに、テクスチャとシャドウバッファはたくさんありますが、WindowsXPではアプリの実行速度が約10倍遅くなると推定されます。

何か案は?

コードをDirectXに移植するための提案はありますか?それは簡単にできますか、それとも書き直しが必要ですか?

さまざまなハードウェアの実行。Linuxボックスの仕様はありませんが、xpボックスはNvidia QuadroFX1500を搭載したIntelDuoCore 2です。Linuxボックスのビデオカードは、ある種のNvidia Geforece(大学のコンピューターでした)でした。

いくつかの開始コード:

FlyWindow::FlyWindow() :
GlowWindow("fly", 300, 100, // GlowWindow::autoPosition, GlowWindow::autoPosition,
       700, 500,
       Glow::rgbBuffer | Glow::doubleBuffer |
       Glow::depthBuffer | Glow::multisampleBuffer,
       Glow::keyboardEvents | Glow::mouseEvents | Glow::dragEvents |
       /*Glow::menuEvents | */ Glow::motionEvents | Glow::visibilityEvents |
       Glow::focusEvents /* set ::glutEntryFunc */ ),

W(700), H(500),
flock(10),
lastSeconds(myclock.getSecondsSinceStart())
{
    myfps = FPScounter();

    GLdraw<float>::initGL(W,H);

    // Add a bouncing checkerboard
    MovingCB = Point3d<double>(50, 2, 50);

    Glow::RegisterIdle(this);
    bDebug = false;
    m_bLookAtCentroid = true;
    m_bLookAtGoal = false;
}

ありがとう

4

3 に答える 3

3

QuadroをGeForceと比較することは大きな間違いです。それらは両方とも「グラフィック」カードである可能性がありますが、それが類似性の終わりです。

Quadroは、ゲームではなくハイエンドレンダリング用に設計されています。Quadroに関するウィキペディアの記事から:

彼らの設計者はCAD(コンピューター支援設計)とDCC(デジタルコンテンツ作成)を加速することを目指しており、カードは通常ワークステーションに搭載されています。(特にコンピュータゲームを対象とするNVIDIA GeForce製品ラインと比較して)。

Quadroは、オペレーティングシステムに関係なく、GeForceとは非常に異なる方法でプリフォームします。

于 2009-01-27T19:20:22.463 に答える
3

DrJokepuがコメントで述べたように、XPがソフトウェアレンダリングを採用している可能性があり、ドライバーのインストールの問題を示唆しています。これは、GL_VENDORおよびGL_RENDERERにクエリを実行することで確認できます。

printf( "%s\n", (const char*)glGetString( GL_VENDOR ) );
printf( "%s\n", (const char*)glGetString( GL_RENDERER ) );

ベンダーはMicrosoftではなくNVidiaである必要があり、レンダラーは少なくともOpenGL2.0である必要があります。

于 2009-01-27T19:33:10.377 に答える
0

QuadroFX 1500 は正確には最新のカードではありません。Linux ボックスの内容を確認し、ハードウェアの仕様を比較してください。私のプロジェクト (高密度の信号データの表示) では、OpenGL のパフォーマンスが Linux/Windows 間でかなり一貫していることがわかりました。

于 2009-01-27T19:15:03.097 に答える