UI: Hide OpenGL and D3D adapter on Windows

OpenGL on Windows is rather unstable and can result in graphical
corruption or the complete inability to start OBS since some GPUs do not
support the minimum requirements after switching to OpenGL. The UI option
is now hidden unless --allow-opengl is passed on the command line.

The D3D adapter is currently unused and we often find users are concerned
when their GPU does not appear in the list.
master
Richard Stanway 2017-04-10 15:52:53 +02:00
parent bda50fb439
commit fdc9c47875
No known key found for this signature in database
GPG Key ID: AAC1E5265D71B3FD
3 changed files with 15 additions and 7 deletions

View File

@ -69,6 +69,7 @@ bool opt_start_recording = false;
bool opt_studio_mode = false;
bool opt_start_replaybuffer = false;
bool opt_minimize_tray = false;
bool opt_allow_opengl = false;
string opt_starting_collection;
string opt_starting_profile;
string opt_starting_scene;
@ -1783,6 +1784,9 @@ int main(int argc, char *argv[])
} else if (arg_is(argv[i], "--studio-mode", nullptr)) {
opt_studio_mode = true;
} else if (arg_is(argv[i], "--allow-opengl", nullptr)) {
opt_allow_opengl = true;
} else if (arg_is(argv[i], "--help", "-h")) {
std::cout <<
"--help, -h: Get list of available commands.\n\n" <<
@ -1798,6 +1802,7 @@ int main(int argc, char *argv[])
"--portable, -p: Use portable mode.\n\n" <<
"--verbose: Make log more verbose.\n" <<
"--unfiltered_log: Make log unfiltered.\n\n" <<
"--allow-opengl: Allow OpenGL on Windows.\n\n" <<
"--version, -V: Get current version.\n";
exit(0);

View File

@ -181,4 +181,5 @@ extern bool opt_start_recording;
extern bool opt_start_replaybuffer;
extern bool opt_minimize_tray;
extern bool opt_studio_mode;
extern bool opt_allow_opengl;
extern std::string opt_starting_scene;

View File

@ -1041,18 +1041,20 @@ void OBSBasicSettings::LoadRendererList()
"Renderer");
ui->renderer->addItem(QT_UTF8("Direct3D 11"));
ui->renderer->addItem(QT_UTF8("OpenGL"));
if (opt_allow_opengl)
ui->renderer->addItem(QT_UTF8("OpenGL"));
int idx = ui->renderer->findText(QT_UTF8(renderer));
if (idx == -1)
idx = 0;
if (strcmp(renderer, "OpenGL") == 0) {
delete ui->adapter;
delete ui->adapterLabel;
ui->adapter = nullptr;
ui->adapterLabel = nullptr;
}
// the video adapter selection is not currently implemented, hide for now
// to avoid user confusion. was previously protected by
// if (strcmp(renderer, "OpenGL") == 0)
delete ui->adapter;
delete ui->adapterLabel;
ui->adapter = nullptr;
ui->adapterLabel = nullptr;
ui->renderer->setCurrentIndex(idx);
#endif