Fix the order of init() calls to fix brightness problem on paint vs

texture.
Clean up the setType method, but it is still not great.
This commit is contained in:
bkuker 2013-04-05 13:55:48 -04:00
parent 9b96dabb16
commit 381cab468c

View File

@ -396,7 +396,6 @@ public class RocketFigure3d extends JPanel implements GLEventListener {
@Override @Override
public void init(final GLAutoDrawable drawable) { public void init(final GLAutoDrawable drawable) {
log.verbose("GL - init()"); log.verbose("GL - init()");
rr.init(drawable);
final GL2 gl = drawable.getGL().getGL2(); final GL2 gl = drawable.getGL().getGL2();
gl.glClearDepth(1.0f); // clear z-buffer to the farthest gl.glClearDepth(1.0f); // clear z-buffer to the farthest
@ -418,6 +417,8 @@ public class RocketFigure3d extends JPanel implements GLEventListener {
gl.glEnable(GLLightingFunc.GL_NORMALIZE); gl.glEnable(GLLightingFunc.GL_NORMALIZE);
rr.init(drawable);
extrasOverlay = new Overlay(drawable); extrasOverlay = new Overlay(drawable);
caretOverlay = new Overlay(drawable); caretOverlay = new Overlay(drawable);
} }
@ -650,30 +651,33 @@ public class RocketFigure3d extends JPanel implements GLEventListener {
// execute the runnable if the drawable isn't realized. // execute the runnable if the drawable isn't realized.
// In order to trump this, we test if the canvas has not been realized and initialize // In order to trump this, we test if the canvas has not been realized and initialize
// the renderer accordingly. There is certainly a better way to do this. // the renderer accordingly. There is certainly a better way to do this.
if (!canvas.isRealized()) {
if (t == TYPE_FIGURE) { final RocketRenderer newRR;
rr = new FigureRenderer();
} else if (t == TYPE_FINISHED) { switch (t) {
rr = new RealisticRenderer(document); case TYPE_FINISHED:
} else if (t == TYPE_UNFINISHED) { newRR = new RealisticRenderer(document);
rr = new UnfinishedRenderer(document); break;
} case TYPE_UNFINISHED:
newRR = new UnfinishedRenderer(document);
break;
default:
newRR = new FigureRenderer();
} }
canvas.invoke(true, new GLRunnable() {
@Override if (!canvas.isRealized()) {
public boolean run(GLAutoDrawable drawable) { rr = newRR;
rr.dispose(drawable); } else {
if (t == TYPE_FIGURE) { canvas.invoke(true, new GLRunnable() {
rr = new FigureRenderer(); @Override
} else if (t == TYPE_FINISHED) { public boolean run(GLAutoDrawable drawable) {
rr = new RealisticRenderer(document); rr.dispose(drawable);
} else if (t == TYPE_UNFINISHED) { rr = newRR;
rr = new UnfinishedRenderer(document); newRR.init(drawable);
return false;
} }
rr.init(drawable); });
return false; }
}
});
} }
} }