forked from teamnwah/openmw-tes3coop
Fixed compilation issue on linux. Updated shader mode selection logic (thanks scrawl). Cleaned up a little but needs more once things are settled.
This commit is contained in:
parent
575780ec0d
commit
52354b14fc
5 changed files with 53 additions and 43 deletions
|
@ -299,14 +299,12 @@ std::auto_ptr<sh::Factory> CS::Editor::setupGraphics()
|
|||
|
||||
std::auto_ptr<sh::Factory> factory (new sh::Factory (platform));
|
||||
|
||||
std::string shLang = mUserSettings.settingValue("Shader/language").toStdString();
|
||||
std::string shLang = mUserSettings.settingValue("General/shader mode").toStdString();
|
||||
enum sh::Language lang;
|
||||
if(shLang == "CG") lang = sh::Language_CG;
|
||||
else if(shLang == "HLSL") lang = sh::Language_HLSL;
|
||||
else if(shLang == "GLSL") lang = sh::Language_GLSL;
|
||||
else if(shLang == "GLSLES") lang = sh::Language_GLSLES;
|
||||
else if(shLang == "Count") lang = sh::Language_Count;
|
||||
else lang = sh::Language_None;
|
||||
if(shLang == "glsl") lang = sh::Language_GLSL;
|
||||
else if(shLang == "glsles") lang = sh::Language_GLSLES;
|
||||
else if(shLang == "hlsl") lang = sh::Language_HLSL;
|
||||
else lang = sh::Language_CG;
|
||||
|
||||
factory->setCurrentLanguage (lang);
|
||||
factory->setWriteSourceCache (true);
|
||||
|
|
|
@ -347,24 +347,49 @@ void CSMSettings::UserSettings::loadSettings (const QString &fileName)
|
|||
#endif
|
||||
}
|
||||
mSettingCfgDefinitions->setValue("Video/render system", renderSystem.c_str());
|
||||
|
||||
std::string currShader = settings.getString("shader mode", "General");
|
||||
// can't call Ogre::Root at this point as it hasn't been initialised
|
||||
QString rend = renderSystem.c_str();
|
||||
bool openGL = rend.contains(QRegExp("^OpenGL", Qt::CaseInsensitive));
|
||||
bool glES = rend.contains(QRegExp("^OpenGL ES", Qt::CaseInsensitive));
|
||||
|
||||
// force shader language based on render system
|
||||
if(renderSystem == "Direct3D9 Rendering Subsystem")
|
||||
mSettingDefinitions->setValue("Shader/language", "CG");
|
||||
else
|
||||
mSettingDefinitions->setValue("Shader/language", "GLSL");
|
||||
if(currShader == ""
|
||||
|| (openGL && currShader == "hlsl")
|
||||
|| (!openGL && currShader == "glsl")
|
||||
|| (glES && currShader != "glsles"))
|
||||
{
|
||||
QString shader = openGL ? (glES ? "glsles" : "glsl") : "hlsl";
|
||||
mSettingDefinitions->setValue("General/shader mode", shader);
|
||||
}
|
||||
|
||||
// check if override entry exists (default: override)
|
||||
if(!mSettingDefinitions->childGroups().contains("Video", Qt::CaseInsensitive))
|
||||
mSettingDefinitions->setValue("Video/use settings.cfg", "true");
|
||||
}
|
||||
|
||||
QStringList CSMSettings::UserSettings::getOgreRenderers()
|
||||
{
|
||||
QStringList result;
|
||||
|
||||
Ogre::RenderSystemList renderers = Ogre::Root::getSingleton().getAvailableRenderers();
|
||||
Ogre::RenderSystemList::iterator it = renderers.begin();
|
||||
for(; it != renderers.end(); ++it)
|
||||
result.append((*it)->getName().c_str());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
QStringList CSMSettings::UserSettings::getOgreOptions(const QString &key, const QString &renderer)
|
||||
{
|
||||
QStringList result;
|
||||
|
||||
Ogre::ConfigOptionMap& renderOpt =
|
||||
//Ogre::Root::getSingleton().getRenderSystem()->getConfigOptions();
|
||||
Ogre::Root::getSingleton().getRenderSystemByName(renderer.toStdString())->getConfigOptions();
|
||||
Ogre::RenderSystem *rend = Ogre::Root::getSingleton().getRenderSystem();
|
||||
if(!rend)
|
||||
return result;
|
||||
|
||||
Ogre::ConfigOptionMap& renderOpt = rend->getConfigOptions();
|
||||
Ogre::ConfigOptionMap::iterator it = renderOpt.begin();
|
||||
|
||||
uint row = 0;
|
||||
|
@ -400,19 +425,11 @@ QStringList CSMSettings::UserSettings::getShaderLanguageByRenderer(const QString
|
|||
QStringList result;
|
||||
|
||||
if(renderer == "Direct3D9 Rendering Subsystem")
|
||||
{
|
||||
result.append("CG");
|
||||
result.append("HLSL");
|
||||
result.append("None");
|
||||
}
|
||||
else if(renderer == "OpenGL Rendering Subsystem")
|
||||
{
|
||||
result.append("GLSL");
|
||||
else if(renderer.contains(QRegExp("^OpenGL ES", Qt::CaseInsensitive)))
|
||||
result.append("GLSLES");
|
||||
result.append("None");
|
||||
}
|
||||
else
|
||||
result.append("None");
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -78,6 +78,7 @@ namespace CSMSettings {
|
|||
|
||||
QStringList getShaderLanguageByRenderer(const QString &renderer);
|
||||
QStringList getOgreOptions(const QString &key, const QString &renderer);
|
||||
QStringList getOgreRenderers();
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -93,7 +93,7 @@ QStringList getAvailableResolutions()
|
|||
return result; // FIXME: add error message
|
||||
}
|
||||
// Store Available Rendering Devices
|
||||
std::vector<std::string>::iterator iter = it->second.possibleValues.begin();
|
||||
Ogre::StringVector::iterator iter = it->second.possibleValues.begin();
|
||||
for(;iter != it->second.possibleValues.end(); ++iter)
|
||||
{
|
||||
std::cout << "rd: " << *iter << std::endl; // FIXME: debug
|
||||
|
@ -108,7 +108,7 @@ QStringList getAvailableResolutions()
|
|||
// FIXME: how to default to the current value?
|
||||
std::cout << "vm current: " << it->second.currentValue << std::endl; // FIXME: debug
|
||||
// Store Available Resolutions
|
||||
std::vector<std::string>::iterator iter = it->second.possibleValues.begin();
|
||||
Ogre::StringVector::iterator iter = it->second.possibleValues.begin();
|
||||
for(; iter != it->second.possibleValues.end(); ++iter)
|
||||
{
|
||||
// extract x and y values
|
||||
|
@ -202,7 +202,7 @@ void CSVSettings::SettingsDialog::slotRendererChanged(const QString &renderer)
|
|||
cmbRenderSys->setEnabled(false);
|
||||
labAntiAlias->setEnabled(false);
|
||||
cmbAntiAlias->setEnabled(false);
|
||||
cbVsync->setEnabled(false);
|
||||
//cbVsync->setEnabled(false);
|
||||
labShaderLang->setEnabled(false);
|
||||
cmbShaderLang->setEnabled(false);
|
||||
}
|
||||
|
@ -218,7 +218,7 @@ void CSVSettings::SettingsDialog::slotOverrideToggled(bool checked)
|
|||
cmbRenderSys->setEnabled(false);
|
||||
labAntiAlias->setEnabled(false);
|
||||
cmbAntiAlias->setEnabled(false);
|
||||
cbVsync->setEnabled(false);
|
||||
//cbVsync->setEnabled(false);
|
||||
labShaderLang->setEnabled(false);
|
||||
cmbShaderLang->setEnabled(false);
|
||||
}
|
||||
|
@ -228,7 +228,7 @@ void CSVSettings::SettingsDialog::slotOverrideToggled(bool checked)
|
|||
cmbRenderSys->setEnabled(true);
|
||||
labAntiAlias->setEnabled(true);
|
||||
cmbAntiAlias->setEnabled(true);
|
||||
cbVsync->setEnabled(true);
|
||||
//cbVsync->setEnabled(true);
|
||||
labShaderLang->setEnabled(true);
|
||||
cmbShaderLang->setEnabled(true);
|
||||
}
|
||||
|
@ -257,8 +257,10 @@ void CSVSettings::SettingsDialog::setViewValues()
|
|||
// initialised in the constructor
|
||||
slotOverrideToggled(cbOverride->isChecked());
|
||||
|
||||
// Ogre initialised earlier
|
||||
slotRendererChanged(Ogre::Root::getSingleton().getRenderSystem()->getName().c_str());
|
||||
// Ogre renderer
|
||||
cmbRenderSys->clear();
|
||||
cmbRenderSys->addItems(mModel->getOgreRenderers());
|
||||
//slotRendererChanged(Ogre::Root::getSingleton().getRenderSystem()->getName().c_str());
|
||||
|
||||
// antialiasing
|
||||
QString antialiasing = mModel->settingValue("Video/antialiasing");
|
||||
|
@ -267,10 +269,12 @@ void CSVSettings::SettingsDialog::setViewValues()
|
|||
cmbAntiAlias->setCurrentIndex(index);
|
||||
|
||||
// vsync
|
||||
cbVsync->setChecked(mModel->settingValue("Video/vsync") == "true");
|
||||
//cbVsync->setChecked(mModel->settingValue("Video/vsync") == "true");
|
||||
cbVsync->setChecked(false); // disable vsync option for now
|
||||
cbVsync->setEnabled(false); // disable vsync option for now
|
||||
|
||||
// shader lang
|
||||
QString shaderlang = mModel->settingValue("Shader/language");
|
||||
QString shaderlang = mModel->settingValue("General/shader mode");
|
||||
index = cmbShaderLang->findData(shaderlang, Qt::DisplayRole);
|
||||
if(index != -1)
|
||||
cmbShaderLang->setCurrentIndex(index);
|
||||
|
@ -366,7 +370,7 @@ void CSVSettings::SettingsDialog::saveSettings()
|
|||
|
||||
// shader lang
|
||||
mModel->setDefinitions("Shader/language",
|
||||
QStringList(cmbShaderLang->currentText()));
|
||||
QStringList(cmbShaderLang->currentText().toLower()));
|
||||
|
||||
// window size
|
||||
if(rbStdWinSize->isChecked())
|
||||
|
|
|
@ -52,16 +52,6 @@
|
|||
<property name="editable">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>OpenGL Rendering Subsystem</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Direct3D9 Rendering Subsystem</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
|
|
Loading…
Reference in a new issue