diff --git a/core/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java b/core/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java index 7bc7bd2f6..a54ef5e7e 100644 --- a/core/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java +++ b/core/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java @@ -580,35 +580,34 @@ public class PreferencesDialog extends JDialog { trans.get("pref.dlg.lbl.effect1"), -2, Style.ITALIC), "spanx, wrap"); - BooleanModel enableGLModel = new BooleanModel(true);//TODO + BooleanModel enableGLModel = new BooleanModel(preferences.getBoolean(Preferences.OPENGL_ENABLED, true)); final JCheckBox enableGL = new JCheckBox(enableGLModel); enableGL.setText("Enable 3D Graphics"); //TODO Translation - enableGL.setSelected(true); //TODO enableGL.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - //TODO + preferences.putBoolean(Preferences.OPENGL_ENABLED, enableGL.isSelected()); } }); panel.add(enableGL, "wrap"); final JCheckBox enableAA = new JCheckBox("Enable Antialiasing"); //TODO Translation - enableAA.setSelected(true); //TODO + enableAA.setSelected(preferences.getBoolean(Preferences.OPENGL_ENABLE_AA, true)); enableAA.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - //TODO + preferences.putBoolean(Preferences.OPENGL_ENABLE_AA, enableAA.isSelected()); } }); enableGLModel.addEnableComponent(enableAA); panel.add(enableAA, "wrap"); final JCheckBox useFBO = new JCheckBox("Use Offscreen Rendering"); //TODO Translation - useFBO.setSelected(false); //TODO + useFBO.setSelected(preferences.getBoolean(Preferences.OPENGL_USE_FBO, false)); useFBO.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - //TODO + preferences.putBoolean(Preferences.OPENGL_USE_FBO, useFBO.isSelected()); } }); enableGLModel.addEnableComponent(useFBO); diff --git a/core/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java b/core/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java index 0874d9f1d..fd2e9eac6 100644 --- a/core/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java +++ b/core/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java @@ -41,6 +41,8 @@ import net.sf.openrocket.gui.figureelements.FigureElement; import net.sf.openrocket.gui.main.Splash; import net.sf.openrocket.rocketcomponent.Configuration; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; +import net.sf.openrocket.startup.Preferences; import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.MathUtil; @@ -125,7 +127,11 @@ public class RocketFigure3d extends JPanel implements GLEventListener { * @return */ public static boolean is3dEnabled() { - return System.getProperty("openrocket.3d.disable") == null; + //Allow disable by command line, if program won't even start + if (System.getProperty("openrocket.3d.disable") != null) + return false; + //return by preference + return Application.getPreferences().getBoolean(Preferences.OPENGL_ENABLED, true); } private void initGLCanvas() { @@ -139,18 +145,22 @@ public class RocketFigure3d extends JPanel implements GLEventListener { log.trace("GL - creating GLCapabilities"); final GLCapabilities caps = new GLCapabilities(glp); - if (true) { + if (Application.getPreferences().getBoolean(Preferences.OPENGL_ENABLE_AA, true)) { log.trace("GL - setSampleBuffers"); caps.setSampleBuffers(true); log.trace("GL - setNumSamples"); caps.setNumSamples(6); - - log.trace("GL - Creating GLCanvas"); - canvas = new GLCanvas(caps); } else { + log.trace("GL - Not enabling AA by user pref"); + } + + if (Application.getPreferences().getBoolean(Preferences.OPENGL_USE_FBO, false)) { log.trace("GL - Creating GLJPanel"); canvas = new GLJPanel(caps); + } else { + log.trace("GL - Creating GLCanvas"); + canvas = new GLCanvas(caps); } log.trace("GL - Registering as GLEventListener on canvas"); diff --git a/core/src/net/sf/openrocket/startup/Preferences.java b/core/src/net/sf/openrocket/startup/Preferences.java index dc3e2b64f..07e9d36c5 100644 --- a/core/src/net/sf/openrocket/startup/Preferences.java +++ b/core/src/net/sf/openrocket/startup/Preferences.java @@ -50,6 +50,11 @@ public abstract class Preferences { public static final String PREFERRED_THRUST_CURVE_MOTOR_NODE = "preferredThrustCurveMotors"; private static final String AUTO_OPEN_LAST_DESIGN = "AUTO_OPEN_LAST_DESIGN"; + //Preferences related to 3D graphics + public static final String OPENGL_ENABLED = "OpenGL_Is_Enabled"; + public static final String OPENGL_ENABLE_AA = "OpenGL_Antialiasing_Is_Enabled"; + public static final String OPENGL_USE_FBO = "OpenGL_Use_FBO"; + /* * ****************************************************************************************** *