【问题标题】:OpenGl without compatible graphics card?OpenGL没有兼容的显卡?
【发布时间】:2017-04-26 18:03:10
【问题描述】:

基本上我有一个没有显卡的windows系统,我试图在cmd中执行一个.jar文件,它会给出以下输出:

Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\shattered>java -jar test.jar

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: OpenGL is not supported by the video driver.

我只是有点技术知识,但我从中得到的收获是我需要获得 OpenGL。所以我做了一些研究,发现了一些关于 OpenGL 软件模式或其他东西的提及,但我不知道如何去做。任何帮助将不胜感激,干杯!

在提到之前,我已经尝试更新视频驱动程序。

【问题讨论】:

  • 如果您有视频驱动程序,那么您肯定有显卡:)。你能分享那个系统的细节吗?您可能需要一个软件兼容层,但这不会有那么高的性能,而且几乎可以免费获得支持 OpenGL 的卡(如果是旧的 OpenGL)。
  • 我有一个,它只是默认的VGA图形适配器,不支持OpenGL
  • IIRC Windows 将没有适当驱动程序的设备标记为Standard VGA Graphics Adapter。您是如何尝试更新驱动程序的?那是标准 PC 主板吗?
  • 有趣,这可能听起来很愚蠢,但是我有没有可能没有驱动程序的功能显卡?我是通过设备管理器做的,只是说驱动是最新的,设备运行正常。
  • @SeaCrumbs 是的,这完全有可能。如果您在过去 5 年内拥有来自 Intel/AMD/Nvidia 的任何类型的集成显卡或专用显卡,那么它无疑应该具有 OpenGL 功能

标签: windows opengl


【解决方案1】:

先上“什么”

OpenGL 是操作系统的图形工具(广义上涵盖从将窗口放到屏幕上到放置单个像素之间的所有内容)和单个程序之间的应用程序编程接口 (API)。 OpenGL 的主要目的是提供对加速图形基础设施的访问,这些基础设施针对最适合 3D 图像生成的光栅化图形基元进行了优化。

现在到“如何”

典型的 OpenGL 实现作为 3D 图形加速处理器 (GPU) 驱动程序的一部分提供。然而,由于(一个非常旧的)版本的 OpenGL,即 OpenGL-1.1,已被指定为 Win32 API 的一部分,自 Windows 95B 和 Windows NT-4 以来的每个 Windows 版本都包含一个备用软件实现,可以在没有加速的情况下使用OpenGL 版本可用。但是,如果需要 OpenGL-1.1 以外的任何版本,则此回退不提供它。

但是,您可以用高级软件光栅化器实现替代标准 OpenGL 接口:Mesa 项目提供了他们的软件光栅化器的一个版本,该版本甚至可以提供现代核心配置文件 OpenGL。通常的建议是将这些替换 opengl32.dll 放在需要它的程序的 .exe 文件之外;事实上,在具有系统文件保护的现代 Windows 系统上,实际上不可能不费吹灰之力就替换原始 DLL。 MSys2 项目提供了替代 DLL 的预构建版本。

当前(撰写本文时):

XZ 档案可以用7-zip 解压。

【讨论】:

  • 是用llvmpipe 还是只用softpipe 构建的?
  • @genpfault:AFAIK llvmpipe,但更好的仔细检查。
  • @datenwolf:谢谢您,先生,通过将包含的 .dll 放在正确的文件夹中,我让它有点功能,程序运行!但有趣的是,似乎缺少一些功能,我在具有 OpenGL 兼容卡的计算机上测试了 .jar,并且我的计算机根本没有很多功能,但它确实有点工作,所以谢谢!
【解决方案2】:

默认的VGA/VESA驱动也用于没有propper驱动的gfx卡。此类卡在初始化之前通常会模拟 EGA/VGA/VESA,因此 Windows 默认驱动程序适用于它们。

所以在启动过程中冻结屏幕并查看已安装设备的 PID/VID 表。从这些数字中,您可以检测出您真正拥有的 gfx 卡并寻找驱动程序。

在极少数情况下,您真的只有 EGA/VGA/VESA(我怀疑)在旧的 MS-DOS 时代有 OpenGL 即使是那些软件驱动程序。您需要为您的平台找到 OpebGL DLL,例如 (opengl32.dll),然后将其直接放入您的可执行文件或像 system32 这样的已知路径...在这种情况下,您至少应该获得 OpenGL 1.0 支持 SW 渲染模式

顺便说一句,如果我的记忆在 win3.11win9x 的旧时代表现良好,那么这个 OpenGL32.dll 是 Windows 安装的一部分我们在 VESA 卡上原生运行了 OpenGL 屏幕保护程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 2018-03-12
    • 2023-03-30
    相关资源
    最近更新 更多