Hi,
ich hab auf Basis des Car-Examples ein Spiel geschrieben und wollte nun eine Änderung vornehmen. Und zwar, dass das Spiel sofort mit Hardware-Rendering startet und nicht wie im Original mit Software-Rendering...
Dafür sind jetzt so wie ich das im Beispiel sehe, einige Dinge zu tun bzw. umzustellen.
Ich entnehme der Methode switchOptions() was ich im Rest des Codes ändern muss:
/**
* This is for switching settings. Currently, only switching from OpenGL to software and
* back is supported here. This is done to avoid switching modes while polling the keyboard,
* because it may have undesired side-effects otherwise.
*/
private void switchOptions() {
switch (switchMode) {
case (SWITCH_RENDERER): {
isIdle = true;
if (buffer.usesRenderer(IRenderer.RENDERER_OPENGL)) {
keyMapper.destroy();
buffer.disableRenderer(IRenderer.RENDERER_OPENGL);
buffer.enableRenderer(IRenderer.RENDERER_SOFTWARE, IRenderer.MODE_OPENGL);
openGL = false;
if (fullscreen) {
device.setFullScreenWindow(null);
}
frame.hide();
frame.dispose();
initializeFrame();
} else {
frame.hide();
buffer.enableRenderer(IRenderer.RENDERER_OPENGL, IRenderer.MODE_OPENGL);
buffer.disableRenderer(IRenderer.RENDERER_SOFTWARE);
openGL = true;
keyMapper.destroy();
keyMapper = new KeyMapper();
}
isIdle = false;
break;
}
}
switchMode = 0;
}
Als erstes stelle in den Renderer um. An dieser Stelle frage ich mich schon, warum im einen Fall erst disabled und dann enabled wird, im anderen Fall andersherum? Gibts dafür einen bestimmten Grund?
Danach setzte ich den Default-Wert von "private boolean openGL" auf true.
Jetzt startet das Programm mit Hardware-Rendering. Allerdings ist ein zweites Fenster sichtbar. Nur, wenn das aktiv ist, registriert das Programm Tastendrücke. Das umzustellen ist mir nicht gelungen. Wahrscheinlich auch schon deshalb, weil ich "keyMapper.destroy();" nicht verstehe...
Über etwas Licht ins Dunkel würde ich mich seehr freuen.
Vielen Dank!
shadow