2013-08-22 29 views
6

Grafik kart bağdaştırıcımın bilgilerini Java API kullanarak almak için herhangi bir yol var mı?Java'da grafik kartı bilgileri nasıl alınır?

DirectX'in bunu kolayca yapabileceğini biliyorum, ancak Java'nın bunu yapıp yapamayacağını merak ediyorum ...?

Aşağıdaki resim gibi .. DirectX, donanımıma tümleşik GPU bağdaştırıcısını ve destekleyici çözümlerinin bir listesini bulur.

Sorunum, Java'nın böyle bir şeyi yapacağı bir API var mı? Java'nın Video Kartı ile ilgili bilgi alabiliyor olması gerçekten merak ediyorum.

enter image description here

teşekkür ederiz.

cevap

8

@Sergey K., cevabında bunu yapmanın birkaç yolu olduğunu söyledi. Bunlardan biri dxdiag aracını kullanıyor (özellikle Windows üzerinde çalışacak) özellikle çıktıyı verilen bir dosyaya yönlendirecek dxdiag /t varyantı.

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(); 
    } 

} 

Oluşturulan dosya aşağıdaki gibi görünecektir:

enter image description here

Ve çıkış aşağıdaki gibi görünecektir: O zaman gerekli bilgi almak için bu dosyayı işleyebilir

- yürütme dxdiag komutu -
- Yazdırma ./foo.txt bilgi -
Kart adı: Intel (R) HD G raphics Aile
Geçerli Mod: 1366 x 768 (32 bit) (60Hz)

3

Java'da bunu yapmanın birkaç yolu vardır. Ama hepsi arka uçları ne olursa olsun DirectX/OpenGL/C++/WinAPI/kullanarak kullanıyorlar.

Bu API'nın her ikisi için Java bağlamalarına ihtiyacınız olacak. Ya da kodunuzu C/C++ 'a yazabilir ve JNI aracılığıyla kullanabilirsiniz.

İlgili konular