【问题标题】:Is possible use batch Script to get OpenGL Version?是否可以使用批处理脚本来获取 OpenGL 版本?
【发布时间】:2016-12-23 14:40:14
【问题描述】:

我想知道是否可能,使用批处理脚本或其他 Windows(XP、七、八、十)或兼容的脚本来获取当前的驱动程序 OpenGL 版本。

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

#!/bin/bash

# 
# Autor     :   Inukaze ( Venezuela )
# Site      :   http://inukaze.wordpress.com
# E-Mail    :   inukaze.otaku@gmail.com
# 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 "$@"
    done

echo "Could not start GzDoom" >&2

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

【问题讨论】:

  • 您是否打算在最终运行该程序的机器上构建程序?
  • 是的,不仅在我的电脑上,在其他电脑上,使用 OpenGL 1.0、OpenGL 2.0 和 OpenGL 3.0 的不同 GPU
  • AFAIK 你需要一些实用程序。创建简单的 .exe 或 google 现有的。 GLEW 附带了 visualinfo,它会输出诸如 OpenGL version string: 4.0.0 - Build 10.18.10.4061 之类的信息以及其他信息。
  • 请不要使用“wanna”、“dude”等俚语,因为这可能会让人很困惑。

标签: windows bash batch-file opengl version


【解决方案1】:

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

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

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

您可能需要编写一个非常简单的程序来创建上下文并执行此操作,除非您依赖像 glxinfo 这样的不可移植的东西,否则您肯定不会从批处理脚本中执行此操作。

【讨论】:

    猜你喜欢
    • 2021-09-09
    • 2020-03-20
    • 2011-08-06
    • 1970-01-01
    • 2020-10-05
    • 2011-05-23
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多