我想知道是否可能,使用批处理脚本或其他Windows(XP,Seven,Eight,Ten)或脚本兼容以获取当前驱动程序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兼容。
答案 0 :(得分:0)
GL版本只能在运行时根据硬件/驱动程序功能确定。
同一个驱动程序可能会在一个GPU上报告3.3,因为它不支持所有4.0功能,而是支持另一个GPU上的4.x.如果不运行某些东西,就无法知道这一点。更糟糕的是,驱动程序的版本字符串历来具有误导性,一些驱动程序声称GL 2.0不支持非二次幂纹理。
软件不应该从报告的驱动程序版本推断任何内容,编写良好的软件将在运行时检查扩展支持,并在初始化时使用回退或失败快速。
您可能需要编写一个非常简单的程序来创建上下文并执行此操作,除非您依赖于glxinfo
之类的非便携式内容,否则您肯定不会从批处理脚本执行此操作。