windows - Linux 和 Windows XP 上的 OpenGL 性能差异

标签 windows linux opengl directx

我注意到我一直在开发的一个 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/

相关文章:

python - 如何在 Python 控制台程序中使用 echo "*"读取密码?

linux - 如何找到 Linux 中用户最常使用的应用程序?

linux - shell 中两个文件的列差异

c++ - OpenGL Planet Generation - 简单矩阵问题(Planet "Spins"With Mouse)

c# - 如何判断当前Windows session 是否被锁定?

c++ - UI动画的标准方式是什么?

javascript - 如何在服务器上运行浏览器功能?

OpenGL如何从平截头体对齐向量计算世界空间坐标?

c++ - 在不安装的情况下运行 OpenGL?

c++ - OpenCV mat::at 抛出异常