diff --git a/apps/launcher/graphicspage.cpp b/apps/launcher/graphicspage.cpp
index d97a915c9e..87d9552714 100644
--- a/apps/launcher/graphicspage.cpp
+++ b/apps/launcher/graphicspage.cpp
@@ -185,9 +185,31 @@ void GraphicsPage::setupOgre()
Ogre::LogManager* logMgr = OGRE_NEW Ogre::LogManager;
logMgr->createLog("launcherOgre.log", true, false, false);
+ QString ogreCfg = QString::fromStdString(Files::getPath(Files::Path_ConfigUser,
+ "openmw", "ogre.cfg"));
+ file.setFileName(ogreCfg);
+
+ /* Not yet supported by OpenMW as it only seems to look in the user directory for ogre.cfg
+ QString ogreCfg = "./ogre.cfg";
+ file.setFileName(ogreCfg);
+
+ if (!file.exists()) {
+ file.setFileName(QString::fromStdString(Files::getPath(Files::Path_ConfigUser,
+ "openmw", "ogre.cfg")));
+ }
+
+ if (!file.exists()) {
+ file.setFileName(QString::fromStdString(Files::getPath(Files::Path_ConfigGlobal,
+ "openmw", "ogre.cfg")));
+ }
+
+ if (!file.exists()) {
+ file.setFileName(ogreCfg);
+ }*/
+
try
{
- mOgre = new Ogre::Root(pluginCfg.toStdString());
+ mOgre = new Ogre::Root(pluginCfg.toStdString(), file.fileName().toStdString(), "./launcherOgre.log");
}
catch(Ogre::Exception &ex)
{
@@ -342,95 +364,74 @@ void GraphicsPage::readConfig()
void GraphicsPage::writeConfig()
{
- // Write the config file settings
-
- // Custom write method: We cannot use QSettings because it does not accept spaces
- QFile file(mOgreConfig->fileName());
-
- if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) {
- // File could not be opened,
- QMessageBox msgBox;
- msgBox.setWindowTitle("Error opening Ogre configuration file");
- msgBox.setIcon(QMessageBox::Critical);
- msgBox.setStandardButtons(QMessageBox::Ok);
- msgBox.setText(tr("
Could not open %0
\
- Please make sure you have the right permissions and try again.
").arg(file.fileName()));
- msgBox.exec();
- return;
- }
-
- QTextStream out(&file);
-
- out << "Render System=" << mSelectedRenderSystem->getName().c_str() << endl << endl;
-
if (mDirect3DRenderSystem) {
- QString direct3DName = mDirect3DRenderSystem->getName().c_str();
- direct3DName.prepend("[");
- direct3DName.append("]");
- out << direct3DName << endl;
-
+ mOgre->setRenderSystem(mDirect3DRenderSystem);
+
+ // Nvidia Performance HUD
if (mD3DNvPerfCheckBox->checkState() == Qt::Checked) {
- out << "Allow NVPerfHUD=Yes" << endl;
+ mDirect3DRenderSystem->setConfigOption("Allow NVPerfHUD", "Yes");
} else {
- out << "Allow NVPerfHUD=No" << endl;
+ mDirect3DRenderSystem->setConfigOption("Allow NVPerfHUD", "No");
}
-
- out << "FSAA=" << mD3DAntiAliasingComboBox->currentText() << endl;
- out << "Floating-point mode=" << mD3DFloatingPointComboBox->currentText() << endl;
-
+
+ // Antialiasing
+ mDirect3DRenderSystem->setConfigOption("FSAA", mD3DAntiAliasingComboBox->currentText().toStdString());
+
+ // Full screen
if (mD3DFullScreenCheckBox->checkState() == Qt::Checked) {
- out << "Full Screen=Yes" << endl;
+ mDirect3DRenderSystem->setConfigOption("Full Screen", "Yes");
} else {
- out << "Full Screen=No" << endl;
+ mDirect3DRenderSystem->setConfigOption("Full Screen", "No");
}
-
- out << "Rendering Device=" << mD3DRenderDeviceComboBox->currentText() << endl;
- out << "Resource Creation Policy=Create on all devices" << endl;
-
+
+ // Rendering device
+ mDirect3DRenderSystem->setConfigOption("Rendering Device", mD3DRenderDeviceComboBox->currentText().toStdString());
+
+ // VSync
if (mD3DVSyncCheckBox->checkState() == Qt::Checked) {
- out << "VSync=Yes" << endl;
+ mDirect3DRenderSystem->setConfigOption("VSync", "Yes");
} else {
- out << "VSync=No" << endl;
+ mDirect3DRenderSystem->setConfigOption("VSync", "No");
}
-
- out << "VSync Interval=1" << endl;
- out << "Video Mode=" << mD3DResolutionComboBox->currentText() << endl;
- out << "sRGB Gamma Conversion=No" << endl;
+
+ // Resolution
+ mDirect3DRenderSystem->setConfigOption("Video Mode", mD3DResolutionComboBox->currentText().toStdString());
}
-
- out << endl;
-
+
if (mOpenGLRenderSystem) {
- QString openGLName = mOpenGLRenderSystem->getName().c_str();
- openGLName.prepend("[");
- openGLName.append("]");
- out << openGLName << endl;
-
- out << "Colour Depth=32" << endl;
- out << "Display Frequency=" << mOGLFrequencyComboBox->currentText() << endl;
- out << "FSAA=" << mOGLAntiAliasingComboBox->currentText() << endl;
-
+ mOgre->setRenderSystem(mOpenGLRenderSystem);
+
+ // Display Frequency
+ mOpenGLRenderSystem->setConfigOption("Display Frequency", mOGLFrequencyComboBox->currentText().toStdString());
+
+ // Antialiasing
+ mOpenGLRenderSystem->setConfigOption("FSAA", mOGLAntiAliasingComboBox->currentText().toStdString());
+
+ // Full screen
if (mOGLFullScreenCheckBox->checkState() == Qt::Checked) {
- out << "Full Screen=Yes" << endl;
+ mOpenGLRenderSystem->setConfigOption("Full Screen", "Yes");
} else {
- out << "Full Screen=No" << endl;
+ mOpenGLRenderSystem->setConfigOption("Full Screen", "No");
}
-
- out << "RTT Preferred Mode=" << mOGLRTTComboBox->currentText() << endl;
-
+
+ // RTT mode
+ mOpenGLRenderSystem->setConfigOption("RTT Preferred Mode", mOGLRTTComboBox->currentText().toStdString());
+
+ // VSync
if (mOGLVSyncCheckBox->checkState() == Qt::Checked) {
- out << "VSync=Yes" << endl;
+ mOpenGLRenderSystem->setConfigOption("VSync", "Yes");
} else {
- out << "VSync=No" << endl;
+ mOpenGLRenderSystem->setConfigOption("VSync", "No");
}
-
- out << "VSync Interval=1" << endl;
- out << "Video Mode=" << mOGLResolutionComboBox->currentText() << endl;
- out << "sRGB Gamma Conversion=No" << endl;
+
+ // Resolution
+ mOpenGLRenderSystem->setConfigOption("Video Mode", mOGLResolutionComboBox->currentText().toStdString());
}
-
- file.close();
-
+
+ //mOpenGLRenderSystem->validateConfigOptions();
+ // Write the settings to the config file
+ mOgre->saveConfig();
+
}
QString GraphicsPage::getConfigValue(const QString &key, Ogre::RenderSystem *renderer)