OpenGL 全屏纹理将帧率降至 12fps

发布于 2024-11-14 01:01:09 字数 747 浏览 4 评论 0原文

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

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

关于如何诊断这个问题有什么想法吗?

我尝试过的事情:

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

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

  • 从 GL_TEXTURE_MIN_FILTER、GL_LINEAR 切换到 GL_TEXTURE_MIN_FILTER、GL_NEAREST 给我买回了一些帧,但它徘徊在略高于 20fps 的位置,这仍然太慢。

    从 GL_TEXTURE_MIN_FILTER、GL_LINEAR 切换到 GL_TEXTURE_MIN_FILTER、GL_NEAREST
  • 我已从 glShadeModel( GL_SMOOTH ) 切换到 glShadeModel( GL_FLAT )。我没有加速。

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

I installed linux (Debian) on an old laptop and have been writing an OpenGL application with it. The framerate cruises at about 80fps when drawing a texture on a small portion of the screen. When I draw the texture on a bigger and bigger portion of the screen, the framerate drastically drops. A full-screen texture drops the fps to 12.

I know the hardware is capable of rendering at a faster rate. Even if openGL was running in software mode.. that still seems pretty slow.

Any ideas on how to diagnose this?

Things I've tried:

  • glxinfo has let me know the laptop is capable of hardware acceleration opengl rendering. While I'm not positive it isn't running in software, I'm fairly sure the laptop is setup to run in hardware opengl.

  • I ditched the depth buffer and am only requesting a 24bit screen buffer in a resolution the laptop supports. (With a backbuffer still).

  • Switching from GL_TEXTURE_MIN_FILTER, GL_LINEAR to GL_TEXTURE_MIN_FILTER, GL_NEAREST bought me back some frames, but it's hovering at slightly over 20fps, which is still too slow.

  • I've switched from glShadeModel( GL_SMOOTH ) to glShadeModel( GL_FLAT ). I've gotten no speed up.

  • I've tried rendering the texture as a vertexpointer and as a glBegin( GL_QUADS ) call.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

桜花祭 2024-11-21 01:01:09

如果从 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:

If switching from BILINEAR (GL_LINEAR) to NEAREST makes the framerate better, you are definitely running software renderer.

Please do this, from the command line (this is from my OSX, but should be similar on 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:
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文