2

我在一台旧笔记本电脑上安装了 linux (Debian),并一直在用它编写一个 OpenGL 应用程序。在屏幕的一小部分上绘制纹理时,帧速率大约为 80fps。当我在屏幕越来越大的部分绘制纹理时,帧率急剧下降。全屏纹理将 fps 降至 12。

我知道硬件能够以更快的速度渲染。即使openGL在软件模式下运行..这似乎仍然很慢。

关于如何诊断这个的任何想法?

我尝试过的事情:

  • glxinfo 让我知道笔记本电脑能够进行硬件加速 opengl 渲染。虽然我不确定它没有在软件中运行,但我相当确定笔记本电脑已设置为在硬件 opengl 中运行。

  • 我放弃了深度缓冲区,只请求笔记本电脑支持的分辨率的 24 位屏幕缓冲区。(仍然有后备缓冲区)。

  • 从 GL_TEXTURE_MIN_FILTER、GL_LINEAR 切换到 GL_TEXTURE_MIN_FILTER,GL_NEAREST 让我恢复了一些帧,但它以略高于 20fps 的速度徘徊,这仍然太慢了。

  • 我已经从 glShadeModel(GL_SMOOTH) 切换到 glShadeModel(GL_FLAT)。我没有提速。

  • 我尝试将纹理渲染为顶点指针和 glBegin( GL_QUADS ) 调用。

4

1 回答 1

0

如果从 BILINEAR (GL_LINEAR) 切换到 NEAREST 可以提高帧率,那么您肯定是在运行软件渲染器。

请从命令行执行此操作(这是来自我的 OSX,但在 linux 上应该类似):

# glxinfo | grep OpenGL
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA GeForce 8600M GT OpenGL Engine
OpenGL version string: 2.1 NVIDIA-1.6.26
OpenGL shading language version string: 1.20
OpenGL extensions:
于 2011-06-04T05:30:47.333 回答