diff --git a/Source/Core/DolphinWX/VideoConfigDiag.cpp b/Source/Core/DolphinWX/VideoConfigDiag.cpp index a4f0f1433e..c474d0199d 100644 --- a/Source/Core/DolphinWX/VideoConfigDiag.cpp +++ b/Source/Core/DolphinWX/VideoConfigDiag.cpp @@ -411,7 +411,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con choice_ppshader->AppendString(StrToWxStr(shader)); } - if (vconfig.sPostProcessingShader.empty()) + if (vconfig.sPostProcessingShader.empty() || vconfig.iStereoMode == STEREO_ANAGLYPH) choice_ppshader->Select(0); else choice_ppshader->SetStringSelection(StrToWxStr(vconfig.sPostProcessingShader)); @@ -453,19 +453,22 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con { wxFlexGridSizer* const szr_stereo = new wxFlexGridSizer(2, 5, 5); - const wxString stereo_choices[] = { "Off", "Side-by-Side", "Top-and-Bottom", "Anaglyph", "Nvidia 3D Vision" }; szr_stereo->Add(new wxStaticText(page_enh, wxID_ANY, _("Stereoscopic 3D Mode:")), 1, wxALIGN_CENTER_VERTICAL, 0); - szr_stereo->Add(CreateChoice(page_enh, vconfig.iStereoMode, wxGetTranslation(stereo_3d_desc), vconfig.backend_info.bSupports3DVision ? 5 : 4, stereo_choices)); + + const wxString stereo_choices[] = { "Off", "Side-by-Side", "Top-and-Bottom", "Anaglyph", "Nvidia 3D Vision" }; + wxChoice* stereo_choice = CreateChoice(page_enh, vconfig.iStereoMode, wxGetTranslation(stereo_3d_desc), vconfig.backend_info.bSupports3DVision ? ArraySize(stereo_choices) : ArraySize(stereo_choices) - 1, stereo_choices); + stereo_choice->Bind(wxEVT_CHOICE, &VideoConfigDiag::Event_StereoMode, this); + szr_stereo->Add(stereo_choice); wxSlider* const sep_slider = new wxSlider(page_enh, wxID_ANY, vconfig.iStereoDepth, 0, 100, wxDefaultPosition, wxDefaultSize); - sep_slider->Bind(wxEVT_SLIDER, &VideoConfigDiag::Event_StereoSep, this); + sep_slider->Bind(wxEVT_SLIDER, &VideoConfigDiag::Event_StereoDepth, this); RegisterControl(sep_slider, wxGetTranslation(stereo_depth_desc)); szr_stereo->Add(new wxStaticText(page_enh, wxID_ANY, _("Depth:")), 1, wxALIGN_CENTER_VERTICAL, 0); szr_stereo->Add(sep_slider, 0, wxEXPAND | wxRIGHT); wxSlider* const conv_slider = new wxSlider(page_enh, wxID_ANY, vconfig.iStereoConvergence, 0, 500, wxDefaultPosition, wxDefaultSize); - conv_slider->Bind(wxEVT_SLIDER, &VideoConfigDiag::Event_StereoFoc, this); + conv_slider->Bind(wxEVT_SLIDER, &VideoConfigDiag::Event_StereoConvergence, this); RegisterControl(conv_slider, wxGetTranslation(stereo_convergence_desc)); szr_stereo->Add(new wxStaticText(page_enh, wxID_ANY, _("Convergence:")), 1, wxALIGN_CENTER_VERTICAL, 0); diff --git a/Source/Core/DolphinWX/VideoConfigDiag.h b/Source/Core/DolphinWX/VideoConfigDiag.h index 7aaaec95b5..0d1c805feb 100644 --- a/Source/Core/DolphinWX/VideoConfigDiag.h +++ b/Source/Core/DolphinWX/VideoConfigDiag.h @@ -152,7 +152,7 @@ protected: // Should we enable the configuration button? PostProcessingShaderConfiguration postprocessing_shader; postprocessing_shader.LoadShader(vconfig.sPostProcessingShader); - button_config_pp->Enable(postprocessing_shader.HasOptions()); + button_config_pp->Enable(postprocessing_shader.HasOptions() && vconfig.iStereoMode != STEREO_ANAGLYPH); ev.Skip(); } @@ -165,20 +165,36 @@ protected: ev.Skip(); } - void Event_StereoSep(wxCommandEvent &ev) + void Event_StereoDepth(wxCommandEvent &ev) { vconfig.iStereoDepth = ev.GetInt(); ev.Skip(); } - void Event_StereoFoc(wxCommandEvent &ev) + void Event_StereoConvergence(wxCommandEvent &ev) { vconfig.iStereoConvergence = ev.GetInt(); ev.Skip(); } + void Event_StereoMode(wxCommandEvent &ev) + { + if (ev.GetInt() == STEREO_ANAGLYPH && vconfig.backend_info.PPShaders.size()) + { + // Anaglyph overrides post-processing shaders + choice_ppshader->Select(0); + choice_ppshader->Enable(false); + } + else if (vconfig.backend_info.PPShaders.size()) + { + choice_ppshader->Enable(true); + } + + ev.Skip(); + } + void Event_ClickClose(wxCommandEvent&); void Event_Close(wxCloseEvent&); @@ -198,12 +214,6 @@ protected: virtual_xfb->Enable(vconfig.bUseXFB); real_xfb->Enable(vconfig.bUseXFB); - // PP Shaders - if (choice_ppshader) - choice_ppshader->Enable(vconfig.iStereoMode != STEREO_ANAGLYPH); - if (button_config_pp) - button_config_pp->Enable(vconfig.iStereoMode != STEREO_ANAGLYPH); - // Things which shouldn't be changed during emulation if (Core::IsRunning()) {