java - 如何在Java上检索显卡信息?

标签 java c++ opengl directx java-3d

有没有什么方法可以使用 Java API 检索我的显卡适配器的信息?

我知道 DirectX 可以轻松做到这一点,但是,我只是想知道 Java 是否可以做到这一点......?

如下图所示.. DirectX 找到集成到我的硬件中的 GPU 适配器,以及它支持的分辨率列表。

我的问题是,是否有 Java 可以执行此类操作的 API? 我真的很想知道 Java 是否能够获取有关视频卡的信息。

enter image description here

谢谢。

最佳答案

正如@Sergey K. 在他的回答中所说,有几种方法可以做到这一点。其中之一是使用 dxdiag 工具(显然它只能在 Windows 上工作),特别是 dxdiag/t 变体,它将输出重定向到给定文件。然后您可以处理该文件以获取所需的信息:

public static void main(String[] args) {        
    try {

        String filePath = "./foo.txt";
        // Use "dxdiag /t" variant to redirect output to a given file
        ProcessBuilder pb = new ProcessBuilder("cmd.exe","/c","dxdiag","/t",filePath);
        System.out.println("-- Executing dxdiag command --");
        Process p = pb.start();
        p.waitFor();

        BufferedReader br = new BufferedReader(new FileReader(filePath));
        String line;
        System.out.println(String.format("-- Printing %1$1s info --",filePath));
        while((line = br.readLine()) != null){
            if(line.trim().startsWith("Card name:") || line.trim().startsWith("Current Mode:")){
                System.out.println(line.trim());
            }
        }
    } catch (IOException | InterruptedException ex) {
        ex.printStackTrace();
    }

}

生成的文件如下所示:

enter image description here

输出看起来像这样:

-- Executing dxdiag command --
-- Printing ./foo.txt info --
Card name: Intel(R) HD Graphics Family
Current Mode: 1366 x 768 (32 bit) (60Hz)

关于java - 如何在Java上检索显卡信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18379091/

相关文章:

java - 如何在 Java 中声明一个动态对象数组?

java - 给定两个 vector 在opengl中绘制3d平面

java - 通过java自动化任务

java - 创建名为 'entityManagerFactory' 的 bean 时出错 -> 无法从类路径资源 [META-INF/persistence.xml] 解析持久性单元

java - onActivityResult 的行为不符合预期

c++ - 试图理解 strtok

c++ - 当我将元素类型存储在另一个字符串 vector 中时,如何打印一个 boost::any vector ?

C++双向关联内存管理策略

qt - 运行 QML 应用程序时,Qt 5.6 中列入黑名单的显卡会发生什么情况?

java - 将 GL_TEXTURE_RECTANGLE_ARB 用于带有 LWJGL 的 spritesheet 时出现闪烁