是否可以使用批处理脚本获取OpenGL版本?
问题描述:
我想知道如果可能,与批处理脚本或另一个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兼容。
答
GL版本只能在运行时根据硬件/驱动程序的功能来确定。
相同的驱动程序可能在一个GPU上报告3.3,因为它不支持所有4.0功能,但在另一个上支持4.x。如果不运行某些东西,就无法知道这一点。更糟糕的是,司机的版本字符串历来是误导性的,一些司机声称GL 2.0没有支持非功率2的纹理。
软件不应该从报告的驱动程序版本推断任何内容,编写良好的软件将在运行时检查扩展支持,并在初始化时使用后备或故障快速。
您可能需要编写一个非常简单的程序来创建上下文并执行此操作,除非您依赖诸如glxinfo
之类的非便携式内容,否则您肯定不会从批处理脚本执行此操作。
您的意图是您将在最终将运行它的机器上构建程序吗? –
是的,不仅在我的电脑上,在其他电脑上,不同的GPU与OpenGL 1.0,OpenGL 2.0和OpenGL 3.0 – inukaze
AFAIK你需要一些实用工具。创建简单的.exe或谷歌现有的一个。 GLEW随Visualinfo一起提供,其中输出类似“OpenGL版本字符串:4.0.0 - Build 10.18.10.4061”等信息。 – Mars