1

我注意到我一直在开发的 OpenGL 应用程序在 Linux 和 WindowsXP 上运行时具有显着的性能差异。

当然,有很多纹理和阴影缓冲区,但我估计该应用程序在 Windows XP 上的运行速度大约慢10 倍。

有任何想法吗?

将代码移植到 DirectX 有什么建议吗?这可以轻松完成还是需要重写?

运行不同的硬件。我没有 Linux 机器的规格,但我的 xp 机器是带有 Nvidia Quadro FX 1500 的 Intel Duo Core 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 ) );

供应商应该是 NVidia 而不是 Microsoft,渲染器应该至少是 OpenGL 2.0。

于 2009-01-27T19:33:10.377 回答
0

QuadroFX 1500 并不是最新的显卡。找出 linux 盒子有什么并比较硬件规格。在我的项目(密集信号数据的显示)中,我发现 OpenGL 的性能在 linux/windows 之间非常一致。

于 2009-01-27T19:15:03.097 回答