我注意到我一直在开发的一个 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;
}
谢谢
最佳答案
正如 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。
关于windows - Linux 和 Windows XP 上的 OpenGL 性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/484690/