QtがOpenGLを使用できる方法はいくつかあります。デスクトップ(ネイティブ)、ANGLE、ES ...そして今では実行時に選択できる「動的」があります。アプリ内で、どれが使用されているかを検出する方法はありますか? C++内またはQML内のどちらか?
例えば グローバル宣言 と同等のもので、OSを検出できます
OpenGLバージョンを検出するには
OpenGLInfo
がありますQOpenGLContext::openGLModuleType()
があります。glGetString(GL_VERSION)
があります。特定のOpenGLバージョンを適用したい場合
QT_OPENGL
をdesktop
に設定するか、アプリケーション属性をQt::AA_UseDesktopOpenGL
に設定します。QT_OPENGL
をangle
に設定するか、アプリケーション属性をQt::AA_UseOpenGLES
に設定します。QT_OPENGL
をsoftware
に設定するか、アプリケーション属性をQt::AA_UseSoftwareOpenGL
に設定します。configure
オプションを使用してQtの静的ビルドを作成し、必要なOpenGLの実装を設定します(ただし、 Qtライセンスルール )[.____に注意してください。]-opengl desktop
を含めます-opengl
オプションを含めないでください。それがデフォルトだからです-opengl dynamic
もあります。これはQt5.4で導入されました。このオプションが必要であるが、他の理由で静的ビルドが必要ない場合は、静的ビルドを作成する必要はありません。ビルド済みのバイナリはQt5.5以降このオプションを使用しているためです。#include <QGuiApplication>
//...
int main(int argc, char *argv[])
{
// Set the OpenGL type before instantiating the application
// In this example, we're forcing use of ANGLE.
// Do either one of the following (not both). They are equivalent.
qputenv("QT_OPENGL", "angle");
QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);
// Now instantiate the app
QGuiApplication app(argc, argv);
//...
return app.exec();
}
(上記のコメントの最初の回答をpeppeに感謝し、ブログリンクのuser12345に感謝)