2016-08-17 61 views
-1

我想知道如果可能,与批处理脚本或另一个Windows(XP,七,八,十)或脚本兼容获取当前驱动程序OpenGL版本。是否可以使用批处理脚本获取OpenGL版本?

我想我适应bash脚本的一部分到Windows:

#!/bin/bash 

# 
# Autor  : Inukaze (Venezuela) 
# Site  : http://inukaze.wordpress.com 
# E-Mail : [email protected] 
# License : GPL 3 
# 
# 

# Obtener la Architecture 
Architecture=$(uname -m) 
case "$Architecture" in 
    x86) Architecture="x32"       ;; 
    i?86) Architecture="x32"       ;; 
    amd64) Architecture="x64"       ;; 
    x86_64) Architecture="x64"       ;; 
    *) echo "Your Architecture Detected $Architecture -> Its not supported" ;; 
esac 


# Detect OpenGL Version : 
OpenGLV=$(glxinfo | grep "OpenGL version" | awk '{ print $4 }' | cut -c 5- | rev) 

# Use the version of GzDoom according to the OpenGL version detected 
case "$OpenGLV" in 
1) 
    echo 
    echo "OpenGL 1 Detected" 
    echo 
    echo "Using GzDoom 1.8.6" 
    Version=1.8.6 
    if [ "$Architecture" = "x32" ]; then 
      LD_LIBRARY_PATH="Gnu/Linux/$Version/lib32" 
      export LD_LIBRARY_PATH 
      Engine="Gnu/Linux/$Version/gzdoom.$Architecture" 
    elif [ "$Architecture" = "x64" ]; then 
      LD_LIBRARY_PATH="Gnu/Linux/$Version/lib64" 
      export LD_LIBRARY_PATH 
      Engine="Gnu/Linux/$Version/gzdoom.$Architecture" 
    else 
     echo "Your Architecture Detected $Architecture -> Its not supported" 
    fi 
    ;; 

2) 
    echo 
    echo "OpenGL 2 Detected" 
    echo 
    echo "Using GzDoom GzDoom 1.9.1" 
    Version=1.9.1 
    if [ "$Architecture" = "x32" ]; then 
      LD_LIBRARY_PATH="Gnu/Linux/$Version/lib32" 
      export LD_LIBRARY_PATH 
      Engine="Gnu/Linux/$Version/gzdoom.$Architecture" 
    elif [ "$Architecture" = "x64" ]; then 
      LD_LIBRARY_PATH="Gnu/Linux/$Version/lib64" 
      export LD_LIBRARY_PATH 
      Engine="Gnu/Linux/$Version/gzdoom.$Architecture" 
    else 
     echo "Your Architecture Detected $Architecture -> Its not supported" 
    fi 
    ;; 

3) 
    echo 
    echo "OpenGL 3 Detected" 
    echo 
    echo "Using GzDoom GzDoom 2.1.1" 
    Version=2.1.1 
    if [ "$Architecture" = "x32" ]; then 
      LD_LIBRARY_PATH="Gnu/Linux/$Version/lib32" 
      export LD_LIBRARY_PATH 
      Engine="Gnu/Linux/$Version/gzdoom.$Architecture" 
    elif [ "$Architecture" = "x64" ]; then 
      LD_LIBRARY_PATH="Gnu/Linux/$Version/lib64" 
      export LD_LIBRARY_PATH 
      Engine="Gnu/Linux/$Version/gzdoom.$Architecture" 
    else 
     echo "Your Architecture Detected $Architecture -> Its not supported" 
    fi 
    ;; 

*) 
    echo "OpenGL version not determined" 
    ;; 
esac 

    export Architectures 
    for Architectures in $Architecture; do 
     test -x ./$Engine || continue 
     exec ./$Engine "[email protected]" 
    done 

echo "Could not start GzDoom" >&2 

但我不知道对批处理脚本或其他脚本得到的OpenGL版本的方法。或者如果有人知道一个简单的命令行工具,我得到它并在新脚本中使用,我想适应Windows兼容。

+0

您的意图是您将在最终将运行它的机器上构建程序吗? –

+0

是的,不仅在我的电脑上,在其他电脑上,不同的GPU与OpenGL 1.0,OpenGL 2.0和OpenGL 3.0 – inukaze

+1

AFAIK你需要一些实用工具。创建简单的.exe或谷歌现有的一个。 GLEW随Visualinfo一起提供,其中输出类似“OpenGL版本字符串:4.0.0 - Build 10.18.10.4061”等信息。 – Mars

回答

0

GL版本只能在运行时根据硬件/驱动程序的功能来确定。

相同的驱动程序可能在一个GPU上报告3.3,因为它不支持所有4.0功能,但在另一个上支持4.x。如果不运行某些东西,就无法知道这一点。更糟糕的是,司机的版本字符串历来是误导性的,一些司机声称GL 2.0没有支持非功率2的纹理。

软件不应该从报告的驱动程序版本推断任何内容,编写良好的软件将在运行时检查扩展支持,并在初始化时使用后备或故障快速。

您可能需要编写一个非常简单的程序来创建上下文并执行此操作,除非您依赖诸如glxinfo之类的非便携式内容,否则您肯定不会从批处理脚本执行此操作。