我注意到,在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;
}
由于
答案 0 :(得分:3)
将Quadro与GeForce进行比较是一个很大的错误。它们可能都是“图形”卡,但这是相似性结束的地方。
Quadro专为高端渲染而非游戏而设计。来自Quadro上的维基百科文章:
无论操作系统如何,Quadro的预制形式与GeForce完全不同。他们的设计师旨在加速CAD(计算机辅助设计)和DCC(数字内容创建),并且这些卡通常在工作站中使用。 (与专门针对电脑游戏的NVIDIA 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性能在linux / windows之间非常一致。