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

问题描述

| 我在旧笔记本电脑上安装了Linux(Debian),并一直在用它编写OpenGL应用程序。在屏幕的一小部分上绘制纹理时,帧速率以约80fps的速度巡航。当我在屏幕的越来越大的部分上绘制纹理时,帧速率会急剧下降。全屏纹理会将fps降至12。 我知道硬件能够以更快的速度渲染。即使openGL在软件模式下运行..看起来仍然很慢。 关于如何诊断的任何想法? 我尝试过的事情: glxinfo让我知道笔记本电脑能够进行硬件加速opengl渲染。虽然我不确定它不是在软件中运行,但我相当确定笔记本电脑已设置为在硬件opengl中运行。 我放弃了深度缓冲区,只要求使用笔记本电脑支持的分辨率的24位屏幕缓冲区。 (仍然有一个backbuffer)。 从GL_TEXTURE_MIN_FILTER,GL_LINEAR切换到GL_TEXTURE_MIN_FILTER,GL_NEAREST给我买了一些帧,但是它的徘徊在略高于20fps,这仍然太慢了。 我已经从glShadeModel(GL_SMOOTH)切换到glShadeModel(GL_FLAT)。我没有加快速度。 我尝试将纹理渲染为顶点指针和glBegin(GL_QUADS)调用。     

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...