我注意到我一直在开发的 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;
}
谢谢