如何测试我的显卡是否支持 3D?

The*_*ent 10 hardware graphics

如何测试我的显卡是否支持 3D?

有人告诉要使用fgl_glxgears,但这里不存在,甚至不用于使用 apt-get 安装。

RAO*_*AOF 16

这是一个包含大量错误/过时/不正确信息的主题。

事情工作:

  • 检查“直接渲染:是”:
    这不是一个准确的指标。软件渲染器支持直接渲染,因此即使您没有硬件 3D 支持,您也可以拥有direct rendering: Yes
  • 检查 的 FPS glxgears
    这也不是一个准确的指标。最新版本的 Ubuntu 将启用 vsync,因此glxgears运行速度与屏幕刷新率一样快。这意味着glxgears几乎总是会打印 FPS60或大约。

什么的工作:

的输出glxinfo包含我们想要的信息。

name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
… snip …
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Mobile Intel® GM45 Express Chipset
OpenGL version string: 2.1 Mesa 7.10.1
OpenGL shading language version string: 1.20
OpenGL extensions:
… snip long extensions list…
Run Code Online (Sandbox Code Playgroud)

OpenGL渲染字符串:梅萨DRI移动式英特尔GM45高速芯片组行表示,我使用我的英特尔GM45芯片做3D渲染。

OpenGL 版本字符串:2.1 Mesa 7.10.1表示此驱动程序/硬件支持的基线 OpenGL 版本 (OpenGL 2.1) 和正在使用的 Mesa 版本 (7.10.1)。

最后,直接渲染: 前两个字段之上的Yes表示驱动程序在直接渲染上下文中正常工作。这永远不会是No ,除非你的安装真的搞砸了(或者你在做一些奇怪的事情,比如连接到远程 X 服务器)。

错误glxinfo输出的例子:

LIBGL_ALWAYS_SOFTWARE=1 glxinfo
name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
    GLX_OML_swap_method, GLX_SGI_make_current_read, GLX_SGI_swap_control,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGIX_visual_select_group, GLX_INTEL_swap_event
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
    GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
    GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap,
    GLX_INTEL_swap_event
GLX version: 1.4
GLX extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGIX_visual_select_group, GLX_INTEL_swap_event
OpenGL vendor string: Mesa Project
OpenGL renderer string: Software Rasterizer
OpenGL version string: 2.1 Mesa 7.10.1
OpenGL shading language version string: 1.20
OpenGL extensions:
    GL_ARB_copy_buffer, GL_ARB_depth_clamp, GL_ARB_depth_texture,
Run Code Online (Sandbox Code Playgroud)

这里我们没有硬件加速,所以Software Rasterizer提供(慢!)3D 支持。

 LIBGL_DRIVERS_PATH=foo glxinfo
name of display: :0
display: :0  screen: 0
direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
    GLX_OML_swap_method, GLX_SGI_make_current_read, GLX_SGI_swap_control,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGIX_visual_select_group, GLX_INTEL_swap_event
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
    GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
    GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap,
    GLX_INTEL_swap_event
GLX version: 1.4
GLX extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
    GLX_OML_swap_method, GLX_SGI_make_current_read, GLX_SGI_swap_control,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap,
    GLX_INTEL_swap_event
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Mobile Intel® GM45 Express Chipset
OpenGL version string: 1.4 (2.1 Mesa 7.10.1)
OpenGL extensions:
    GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_fragment_program,
    GL_ARB_fragment_program_shadow, GL_ARB_multisample, GL_ARB_multitexture,
Run Code Online (Sandbox Code Playgroud)

在这里,我们通过将 LIBGL 指向一个不存在的 DRIVERS_PATH 来破坏直接渲染。直接渲染路径失败:

direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)
Run Code Online (Sandbox Code Playgroud)

但是间接渲染还在工作,因为显示服务器已经加载了驱动

OpenGL renderer string: Mesa DRI Mobile Intel® GM45 Express Chipset
OpenGL version string: 1.4 (2.1 Mesa 7.10.1)
Run Code Online (Sandbox Code Playgroud)

(请注意,所宣传的 OpenGL 版本现在是 OpenGL 1.4 - 这是具有间接渲染协议的最新 OpenGL 版本)。