Linux和Windows XP上的OpenGL性能差异

时间:2009-01-27 18:49:25

标签: windows linux opengl directx

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

当然,有很多纹理和阴影缓冲区,但我估计应用程序在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;
}

由于

3 个答案:

答案 0 :(得分:3)

将Quadro与GeForce进行比较是一个很大的错误。它们可能都是“图形”卡,但这是相似性结束的地方。

Quadro专为高端渲染而非游戏而设计。来自Quadro上的维基百科文章:

  

他们的设计师旨在加速CAD(计算机辅助设计)和DCC(数字内容创建),并且这些卡通常在工作站中使用。 (与专门针对电脑游戏的NVIDIA GeForce产品系列相比)。

无论操作系统如何,Quadro的预制形式与GeForce完全不同。

答案 1 :(得分:3)

正如Dr.Jokepu在评论中提到的,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。

答案 2 :(得分:0)

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